云服务器内容精选

  • GAUSS-01001 -- GAUSS-01010 GAUSS-01001: "invalid type category '%s': must be simple ASCII" SQLSTATE: 22023 错误原因:非法的类型类别:类别名必须是简单ASCII字符(ASCII值33--126)。 解决办法:确保使用简单ASCII字符(ACII值22--126)作为类型的类别名。 GAUSS-01002: "array element type cannot be %s" SQLSTATE: 42804 错误原因:数组的元素类型不能是伪类型。 解决办法:检查类型定义,请勿使用伪类型作为数组元素类型。 GAUSS-01003: "alignment '%s' not recognized" SQLSTATE: 22023 错误原因:对齐参数不合法。 解决办法:检查数据类型定义中的对齐参数,确保其是合法的参数。 GAUSS-01004: "storage '%s' not recognized" SQLSTATE: 22023 错误原因:存储参数不合法。 解决办法:检查数据类型定义中的存储参数,确保其是合法的。 GAUSS-01005: "type input function must be specified" SQLSTATE: 42P17 错误原因:没有指定数据类型的input函数。 解决办法:检查数据类型定义语句,确保指定了input函数。 GAUSS-01006: "type output function must be specified" SQLSTATE: 42P17 错误原因:没有指定数据类型的output函数。 解决办法:检查数据类型定义语句,确保指定了output函数。 GAUSS-01007: "type modifier output function is useless without a type modifier input function" SQLSTATE: 42P17 错误原因:只指定类型的TYPMOD_OUT函数而不指定TYPMOD_IN函数是无效的。 解决办法:检查类型定义语句,确保在定义TYPMOD_OUT时同时定义了TYPMOD_IN函数。 GAUSS-01008: "type input function %s must return type %s" SQLSTATE: 42P17 错误原因:类型的input函数没有返回指定的类型。 解决办法:检查类型定义语句,确保input函数返回指定的类型。 GAUSS-01009: "type output function %s must return type 'cstring'" SQLSTATE: 42P17 错误原因:类型的output函数没有返回指定的类型。 解决办法:检查类型定义语句,确保output函数返回指定的类型。 GAUSS-01010: "type receive function %s must return type %s" SQLSTATE: 42P17 错误原因:类型的receive函数没有返回指定的类型。 解决办法:检查类型定义语句,确保receive函数返回指定的类型。 父主题: GAUSS-01001 -- GAUSS-01100
  • GAUSS-01911 -- GAUSS-01920 GAUSS-01911: "constraint '%s' for domain %s already exists" SQLSTATE: 42710 错误原因:在当前表对象中,重命名时想要使用的constraint名字已经存在。 解决办法:请确认当前域中的已经存在的constraint名称。 GAUSS-01912: "table '%s' has multiple constraints named '%s'" SQLSTATE: 42710 错误原因:当前表中至少有两个相同名字的constraint。 解决办法:请确保对于同一张表,其constraint名称不相重合。 GAUSS-01913: "constraint '%s' for table '%s' does not exist" SQLSTATE: 42704 错误原因:当前表中不存在该constraint。 解决办法:请确认当前表中存在该constraint,或核查该表上的constraint。 GAUSS-01914: "domain '%s' has multiple constraints named '%s'" SQLSTATE: 42710 错误原因:当前域中至少有两个相同名字的constraint。 解决办法:请确保在同一域中,其constraint名称不相重合。 GAUSS-01915: "constraint '%s' for domain '%s' does not exist" SQLSTATE: 42704 错误原因:当前域中不存在该constraint。 解决办法:请确认该域所持有的constraint。 GAUSS-01916: "null conkey for constraint %u" SQLSTATE: XX005 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-01917: "conkey is not a 1-D smallint array" SQLSTATE: 42804 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-01918: "no aggregate name supplied" SQLSTATE: XX000 错误原因:Aggregate未提供name。 解决办法:请提供Aggregate name。 GAUSS-01919: "aggregate must have a transition function" SQLSTATE: XX000 错误原因:Aggregate必须有一个transition function。 解决办法:请提供transition function。 GAUSS-01920: "cannot determine transition data type" SQLSTATE: 42P13 错误原因:在创建聚集函数时对于复合类型无法确定其变换类型。 解决办法:对于复合类型应指定其转换类型。 父主题: GAUSS-01901 -- GAUSS-02000
  • GAUSS-03001 -- GAUSS-03010 GAUSS-03001: "smalldatetime out of range" SQLSTATE: 22008 错误原因:数值越界。 解决办法:检查输入数据。 GAUSS-03002: "smalldatetime cannot be NaN" SQLSTATE: 22008 错误原因:smalldatetime类型数据不能为无限值。 解决办法:检查输入数据。 GAUSS-03003: "timestamp(%d) precision must be between %d and %d" SQLSTATE: 22023 错误原因:timestamp的精度只能介于0到6之间。 解决办法:检查输入的精度是否越界。 GAUSS-03004: "unexpected dtype %d while parsing timestamptz '%s'" SQLSTATE: XX000 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-03005: "interval out of range" SQLSTATE: 22008 错误原因:interval类型数据越界。 解决办法:检查输入数据。 GAUSS-03006: "unexpected dtype %d while parsing interval '%s'" SQLSTATE: XX000 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-03007: "could not convert interval to tm" SQLSTATE: XX000 错误原因: 系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-03008: "invalid INTERVAL type modifier" SQLSTATE: 22023 错误原因:非法的interval类型精度值。 解决办法:检查类型精度值。 GAUSS-03009: "INTERVAL(%d) precision must not be negative" SQLSTATE: 22023 错误原因:interval类型的精度值不能为负。 解决办法:检查类型精度值。 GAUSS-03010: "invalid INTERVAL typmod: 0x%x" SQLSTATE: XX000 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 父主题: GAUSS-03001 -- GAUSS-03100
  • GAUSS-03351 -- GAUSS-03360 GAUSS-03351: "cannot use 'EEEE' twice" SQLSTATE: 42601 错误原因:数值格式错误,“EEEE”不应出现两次。 解决办法:修正数值格式,重新执行。 GAUSS-03352: "'EEEE' is incompatible with other formats" SQLSTATE: 42601 错误原因:数值格式错误,“EEEE”与其它格式不兼容。 解决办法:修正数值格式,重新执行。 GAUSS-03353: "invalid data for match in format string" SQLSTATE: 22007 错误原因:数据转换为timestamp格式时,format参数值不正确,不符合timestamp格式。 解决办法:请修正转换格式format的字符串,使其能正确表示timestamp格式,重新执行。 GAUSS-03354: "'%s' is not a number" SQLSTATE: 22P02 错误原因:数字串中不应有非数字字符。 解决办法:请修正数字字符串,重新执行。 GAUSS-03355: "could not determine which collation to use for lower() function" SQLSTATE: 42P22 错误原因:在调用lower函数时无法确定使用的collation。 解决办法:应该使用COLLATE子句显式设定collation。 GAUSS-03356: "could not determine which collation to use for upper() function" SQLSTATE: 42P22 错误原因:在调用upper函数时无法确定使用的collation。 解决办法:应该使用COLLATE子句显式设定collation。 GAUSS-03357: "could not determine which collation to use for initcap() function" SQLSTATE: 42P22 错误原因:在调用initcap函数时无法确定使用的collation。 解决办法:应该使用COLLATE子句显式设定collation。 GAUSS-03358: " RR/RRRR should be between 0 - 9999" SQLSTATE: 22008 错误原因:日期时间错误,年份应该在0-9999范围内。 解决办法:请修正年份数值在合理范围内。 GAUSS-03359: "invalid combination of date conventions" SQLSTATE: 22007 错误原因:日期格式错误,不应混合使用公历和ISO星期日期格式。 解决办法:修正日期格式,使用公历日期或者ISO星期日期。 GAUSS-03360: "conflicting values for '%s' field in formatting string" SQLSTATE: 22007 错误原因:日期时间格式错误,同一字段被重复赋予不同的取值。 解决办法:不应设置冲突的值,取消第二次赋值。 父主题: GAUSS-03301 -- GAUSS-03400
  • GAUSS-01781 -- GAUSS-01790 GAUSS-01781: "cannot move objects into system schema" SQLSTATE: 0A000 错误原因:不可将对象移入系统表空间。 解决办法:请确认当前表空间类型,如果为系统表空间,将不支持移入相关数据对象。 GAUSS-01782: "improper relation name (too many dotted names): %s" SQLSTATE: 42601 错误原因:导入的表名称不合法。 解决办法:数据库系统中的表名称最为复杂的情况是catalogname.schemaname.relname,如果超过此情况,将不再支持。 GAUSS-01783: "unexpected node type in name list: %d" SQLSTATE: XX000 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-01784: "bogus PopOverrideSearchPath call" SQLSTATE: XX000 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-01785: "collation '%s' for encoding '%s' does not exist" SQLSTATE: 42704 错误原因:对应于GetDatabaseEncodingName()所得到的编码方法并不支持NameListToString(name)所对应的字符集。 解决办法:查询手册确认当前系统所支持的字符集以及相应的编码方式。 示例: 1 2 3 4 postgres=# select 'a' collate "dummy"; ERROR: collation "dummy" for encoding "UTF8" does not exist LINE 1: select 'a' collate "dummy"; ^ GAUSS-01786: "conversion '%s' does not exist" SQLSTATE: 42704 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-01787: "invalid list syntax" SQLSTATE: XX000 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-01788: "permission denied to create temporary tables in database '%s'" SQLSTATE: 42501 错误原因:该用户没有在当前数据库创建临时表的权限。 解决办法:执行GRANT语句赋予该用户访问当前数据库的权限,具体语句如下: 1 GRANT TEMPORARY on DATABASE database_name TO role_name; 更多GRANT语法内容,请参见GRANT。 GAUSS-01789: "cannot create temporary tables during recovery" SQLSTATE: 25006 错误原因:数据库当前属于从某个状态恢复的过程中,此时不支持创建临时表。 解决办法:若创建临时表不成功,可优先查看当前数据库状态。 GAUSS-01790: "current user does not have privilege to role %s" SQLSTATE: 42501 错误原因:当前用户没有管理role的权限。 解决办法:可向管理员确认用户当前的权限。 父主题: GAUSS-01701 -- GAUSS-01800
  • GAUSS-03011 -- GAUSS-03020 GAUSS-03011: "unrecognized interval typmod: %d" SQLSTATE: XX000 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-03012: "interval(%d) precision must be between %d and %d" SQLSTATE: 22023 错误原因:interval类型的精度值必须介于0到6之间。 解决办法:检查类型精度值。 GAUSS-03013: "invalid argument for EncodeSpecialTimestamp" SQLSTATE: XX000 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-03014: "cannot subtract infinite timestamps" SQLSTATE: 22008 错误原因:不能减去无限值的timestamp值。 解决办法:检查输入数据。 GAUSS-03015: "expected 2-element interval array" SQLSTATE: XX000 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-03016: "timestamp units '%s' not supported" SQLSTATE: 0A000 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-03017: "timestamp units '%s' not recognized" SQLSTATE: 22023 错误原因:timestamp没有时间单位。 解决办法:检查输入参数。 GAUSS-03018: "timestamp with time zone units '%s' not supported" SQLSTATE: 0A000 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-03019: "timestamp with time zone units '%s' not recognized" SQLSTATE: 22023 错误原因:带timezone的timestamp没有时间单位。 解决办法:检查输入参数。 GAUSS-03020: "interval units '%s' not supported" SQLSTATE: 0A000 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 父主题: GAUSS-03001 -- GAUSS-03100
  • GAUSS-03361 -- GAUSS-03370 GAUSS-03361: "source string too short for '%s' formatting field" SQLSTATE: 22007 错误原因:日期时间格式错误,源字符串长度小于需要读取的长度。 解决办法:如果源字符串不是定长的,尝试使用“FM”修饰符。 GAUSS-03362: "invalid value '%s' for '%s'" SQLSTATE: 22007 错误原因:日期时间格式错误,需要长度的字符中有部分字符无法解析。 解决办法:请修正要转换为日期时间的字符格式,使其符合日期时间的字符格式要求,如果源字符串不是定长的,尝试使用“FM”修饰符。 GAUSS-03363: "value for '%s' in source string is out of range" SQLSTATE: 22008 错误原因:日期时间格式错误,字符串的值超出正常范围。 解决办法:请根据提示调整字符取值,使其满足范围要求。 GAUSS-03364: "character does not match format string" SQLSTATE: 22007 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-03365: "input length of format 'US'/'us'/'FF'/'ff' must between 0 and 6" SQLSTATE: 22008 错误原因:日期时间的值超出范围,“US/us/FF/ff”格式的长度必须在0-6之间。 解决办法:修正格式长度,其值应在0-6之间。 GAUSS-03366: "'TZ'/'tz' format patterns are not supported in to_date" SQLSTATE: 0A000 错误原因:不支持“TZ/tz”格式的日期。 解决办法:修正时间格式。 GAUSS-03367: "invalid input string for 'Y,YYY'" SQLSTATE: 22007 错误原因:输入的字符串不满足日期时间格式要求。 解决办法:输入的字符串必须是“Y,YYY”格式。 GAUSS-03368: "invalid data for match in date string" SQLSTATE: 22007 错误原因:日期时间格式错误,在日期字符串中用来匹配的数据不合法。 解决办法:使用合法的字符文本查询匹配。 GAUSS-03369: "invalid data for '%s = %d' ,value must be %s" SQLSTATE: 22008 错误原因:日期时间格式错误,输入数据与指定值不一致。 解决办法:按指定值输入数据。 GAUSS-03370: " seconds of minute conflicts with seconds in day" SQLSTATE: 22007 错误原因:日期时间格式错误,分钟和天中的秒数不一致。 解决办法:修正日期时间格式错误。 父主题: GAUSS-03301 -- GAUSS-03400
  • GAUSS-03541 -- GAUSS-03550 GAUSS-03541: "recovery_target_xid is not a valid number: '%s'" SQLSTATE: XX000 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-03542: "recovery_target_name is too long (maximum %d characters)" SQLSTATE: 22023 错误原因:配置恢复目标名称太长。 解决办法:请缩短配置恢复目标名称后,重新恢复数据库。 GAUSS-03543: "unrecognized recovery parameter '%s'" SQLSTATE: XX000 错误原因:配置恢复参数不支持。 解决办法:请正确配置恢复参数后,重新恢复数据库。 GAUSS-03544: "recovery command file '%s' must specify restore_command when standby mode is not enabled" SQLSTATE: XX000 错误原因:配置恢复命令为空。 解决办法:请正确配置恢复命令后,重新恢复数据库。 GAUSS-03545: "recovery target timeline %u does not exist" SQLSTATE: XX000 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-03546: "hot standby is not possible because %s = %d is a lower setting than on the master server (its value was %d)" SQLSTATE: 22023 错误原因:备机的参数配置比主机小。 解决办法:请修改配置,重启数据库。 GAUSS-03547: "hot standby is not possible because wal_level was not set to 'hot_standby' on the master server" SQLSTATE: XX000 错误原因:主机参数wal_level没有设置为hot_standby。 解决办法:请设置主机参数wal_level为hot_standby后,重建HA。 GAUSS-03548: "control file contains invalid data" SQLSTATE: XX000 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-03549: "requested timeline %u is not a child of database system timeline %u" SQLSTATE: XX000 错误原因:备份的WAL日志文件与数据库不匹配。 解决办法:请确保WAL日志文件与数据库一致后,重启恢复数据库。 GAUSS-03550: "could not find redo location referenced by checkpoint record" SQLSTATE: XX000 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 父主题: GAUSS-03501 -- GAUSS-03600
  • GAUSS-00981 -- GAUSS-00990 GAUSS-00981: "unrecognized CoercionContext: %d" SQLSTATE: XX000 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-00982: "cast from type %s to type %s already exists" SQLSTATE: 42710 错误原因:从源数据类型到目标数据类型的CAST已经存在。 解决办法:从源数据类型到目标数据类型的CAST已经存在,无需再创建。 GAUSS-00983: "cast from type %s to type %s does not exist" SQLSTATE: 42704 错误原因:从源数据类型到目标数据类型的CAST不存在。 解决办法:检查pg_cast系统表,确认CAST是否存在,如不存在,可以进行创建或重写SQL语句。 GAUSS-00984: "could not find tuple for cast %u" SQLSTATE: XX000 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-00985: "function '%s' already exists in schema '%s'" SQLSTATE: 42723 错误原因:目标模式中的这个函数已存在。 解决办法:检查目标模式,确定是否已创建了同名函数。 GAUSS-00986: "failed to change schema dependency for function '%s'" SQLSTATE: XX000 错误原因:更改函数的模式依赖未成功。 解决办法:系统表异常,请联系技术支持工程师提供技术支持。 GAUSS-00987: "no inline code specified" SQLSTATE: 42601 错误原因:匿名块中没有指定内联语句(匿名块为内联执行,因此其中的语句都是内联语句)。 解决办法:检查匿名块语法,确保其中有内联语句(匿名块为内联执行,因此其中的语句都是内联语句)。 GAUSS-00988: "language '%s' does not support inline code execution" SQLSTATE: 0A000 错误原因:此语言不支持内联执行。 解决办法:使用普通函数替代或使用其他语言。 GAUSS-00989: "source encoding '%s' does not exist" SQLSTATE: 42704 错误原因:转换中的源编码不存在。 解决办法:检查源编码,确保其在系统中存在。 GAUSS-00990: "destination encoding '%s' does not exist" SQLSTATE: 42704 错误原因:转换中的目标编码不存在。 解决办法:检查目标编码,确保其在系统中存在。 父主题: GAUSS-00901 -- GAUSS-01000
  • GAUSS-01101 -- GAUSS-01110 GAUSS-01101: "%s requires an integer value" SQLSTATE: 42601 错误原因:需要一个integer类型的参数,但语句中给的参数不是。 解决办法:检查SQL语句,给出正确的参数。 GAUSS-01102: "invalid argument for %s: '%s'" SQLSTATE: 42601 错误原因:参数不合法。 解决办法:检查SQL语句,给出正确的参数。 GAUSS-01103: "table is not partitioned" SQLSTATE: 0A000 错误原因:要cluster表分区,但此表不是分区表。 解决办法:检查表名,对普通表不能cluster分区。 GAUSS-01104: "cannot cluster temporary tables of other sessions" SQLSTATE: 0A000 错误原因:不能cluster其他session创建的临时表。 解决办法:检查要cluster的表,不能CLUSTER其他session创建的临时表。 GAUSS-01105: "there is no previously clustered index for table '%s'" SQLSTATE: 42704 错误原因:没有指定索引名称,此表之前也未执行过cluster,因此无法确定以哪个索引来执行cluster。 解决办法:如果不指定cluster的索引名称,就必须保证此表之前执行过cluster,系统使用上次cluster的索引。否则,需要指明要执行cluster的索引名称。 GAUSS-01106: "cannot cluster a shared catalog" SQLSTATE: 0A000 错误原因:不能对一个多数据库间共享的系统表做cluster操作。 解决办法:请勿对共享的系统表执行cluster操作。 GAUSS-01107: "cannot vacuum temporary tables of other sessions" SQLSTATE: 0A000 错误原因:不能VACUUM其他session创建的临时表。 解决办法:检查要VACUUM的表,不能VACUUM其他session创建的临时表。 GAUSS-01108: "'%s' is not an index for table '%s'" SQLSTATE: 42809 错误原因:此索引不是这个表的索引,因此不能做cluster。 解决办法:检查SQL语句中索引和对应的表是否匹配。 GAUSS-01109: "cannot cluster on index '%s' because access method does not support clustering" SQLSTATE: 0A000 错误原因:不能对此索引做cluster,此索引类型不支持cluster。 解决办法:请勿对此类型的索引做cluster,此索引类型不支持cluster。 GAUSS-01110: "cannot cluster on partial index '%s'" SQLSTATE: 0A000 错误原因:不能对部分索引(partial index)执行cluster。 解决办法:请勿对部分索引(partial index)执行cluster。 父主题: GAUSS-01101 -- GAUSS-01200
  • 常见问题处理 [UnixODBC][Driver Manager]Can't open lib 'xxx/xxx/psqlodbcw.so' : file not found. 此问题的可能原因: odbcinst.ini文件中配置的路径不正确。 确认的方法:执行ls命令确认错误信息中的路径,以确保该psqlodbcw.so文件存在,同时具有执行权限。 psqlodbcw.so的依赖库不存在,或者不在系统环境变量中。 确认的办法:执行ldd命令确认错误信息中的路径,如果是缺少libodbc.so.1等UnixODBC的库,那么按照“操作步骤”中的方法重新配置UnixODBC,并确保它的安装路径下的lib目录添加到了LD_LIBRARY_PATH中;如果是缺少其他库,请将ODBC驱动包中的lib目录添加到LD_LIBRARY_PATH中。 [UnixODBC]connect to server failed: no such file or directory 此问题可能的原因: 配置了错误的/不可达的数据库地址,或者端口。 请检查数据源配置中的Servername及Port配置项。 服务器监听不正确。 如果确认Servername及Port配置正确,请根据“操作步骤”中数据库服务器的相关配置,确保数据库监听了合适的网卡及端口。 防火墙及网闸设备。 请确认防火墙设置,将数据库的通信端口添加到可信端口中。 如果有网闸设备,请确认相关的设置。 [unixODBC]The password-stored method is not supported. 此问题可能原因: 数据源中未配置sslmode配置项。 解决办法: 请配置该选项至allow或以上选项。此配置的更多信息,见表3。 Server common name "xxxx" does not match host name "xxxxx" 此问题的原因: 使用了SSL加密的“verify-full”选项,驱动程序会验证证书中的主机名与实际部署数据库的主机名是否一致。 解决办法: 碰到此问题可以使用“verify-ca”选项,不再校验主机名;或者重新生成一套与数据库所在主机名相同的CA证书。 Driver's SQLAllocHandle on SQL_HANDLE_DBC failed 此问题的可能原因: 可执行文件(比如UnixODBC的isql,以下都以isql为例)与数据库驱动(psqlodbcw.so)依赖于不同的odbc的库版本:libodbc.so.1或者libodbc.so.2。此问题可以通过如下方式确认: ldd `which isql` | grep odbc ldd psqlodbcw.so | grep odbc 这时,如果输出的libodbc.so最后的后缀数字不同或者指向不同的磁盘物理文件,那么基本就可以断定是此问题。isql与psqlodbcw.so都会要求加载libodbc.so,这时如果它们加载的是不同的物理文件,便会导致两套完全同名的函数列表,同时出现在同一个可见域里(UnixODBC的libodbc.so.*的函数导出列表完全一致),产生冲突,无法加载数据库驱动。 解决办法: 确定一个要使用的UnixODBC,然后卸载另外一个(比如卸载库版本号为.so.2的UnixODBC),然后将剩下的.so.1的库,新建一个同名但是后缀为.so.2的软链接,便可解决此问题。 FATAL: Forbid remote connection with trust method! 由于安全原因,数据库CN禁止集群内部其他节点无认证接入。 如果要在集群内部访问CN,请将ODBC程序部署在CN所在机器,服务器地址使用"127.0.0.1"。建议业务系统单独部署在集群外部,否则可能会影响数据库运行性能。 [unixODBC][Driver Manager]Invalid attribute value 在使用SQL on other GaussDB 功能时碰到此问题,有可能是unixODBC的版本并非推荐版本,建议通过“odbcinst --version”命令排查环境中的unixODBC版本。 authentication method 10 not supported. 使用开源客户端碰到此问题,可能原因: 数据库中存储的口令校验只存储了SHA256格式哈希,而开源客户端只识别MD5校验,双方校验方法不匹配报错。 数据库并不存储用户口令,只存储用户口令的哈希码。 早期版本(V100R002C80SPC300之前的版本)的数据库只存储了SHA256格式的哈希,并未存储MD5的哈希,所以无法使用MD5做用户口令校验。 新版本(V100R002C80SPC300及之后版本)的数据库当用户更新用户口令或者新建用户时,会同时存储两种格式的哈希码,这时将兼容开源的认证协议。 但是当老版本升级到新版本时,由于哈希的不可逆性,所以数据库无法还原用户口令,进而生成新格式的哈希,所以仍然只保留了SHA256格式的哈希,导致仍然无法使用MD5做口令认证。 要解决该问题,可以更新用户口令;或者新建一个用户,赋予同等权限,使用新用户连接数据库。 unsupported frontend protocol 3.51: server supports 1.0 to 3.0 目标数据库版本过低,或者目标数据库为开源数据库。请使用对应版本的数据库驱动连接目标数据库。
  • random_page_cost 参数说明:设置优化器计算一次非顺序抓取磁盘页面的开销。 参数类型:USERSET 取值范围:浮点型,0~DBL_MAX。 默认值:4 虽然服务器允许将random_page_cost设置的比seq_page_cost小,但是物理上实际不受影响。如果所有数据库都位于随机访问内存中时,两者设置为相等很合理。因为在此种情况下,非顺序抓取页并没有副作用。同样,在缓冲率很高的数据库上,应该相对于CPU参数同时降低这两个值,因为获取内存中的也要比通常情况下开销小很多。 对于特别表空间中的表和索引,可以通过设置同名的表空间的参数来覆盖这个值。 相对于seq_page_cost,减少这个值将导致系统更倾向于使用索引扫描,而增加这个值使得索引扫描开销比较高。可以通过同时增加或减少这两个值来调整磁盘I/O相对于CPU的开销。
  • effective_cache_size 参数说明:设置优化器在一次单一的查询中可用的磁盘缓冲区的有效大小。 设置这个参数,还要考虑GaussDB(DWS)的共享缓冲区以及内核的磁盘缓冲区。另外,还要考虑预计的在不同表之间的并发查询数目,因为它们将共享可用的空间。 这个参数对GaussDB(DWS)分配的共享内存大小没有影响,它也不会使用内核磁盘缓冲,它只用于估算。数值是用磁盘页来计算的,通常每个页面是8192字节。 参数类型:USERSET 取值范围:整型,1~INT_MAX,单位为8KB。 比默认值高的数值可能会导致使用索引扫描,更低的数值可能会导致选择顺序扫描。 默认值:128MB
  • 日志 PL/Java使用标准的Java Logger。 因此,用户可以通过如下方式记录日志: Logger.getAnonymousLogger().config( "Time is " + new Date(System.currentTimeMillis())); 初始化的Java Logger类会默认设置为CONFIG级别,对应为GaussDB(DWS)的 LOG 级别。Java Logger类输出的日志消息都会重定向到GaussDB(DWS)后端,并写入到服务器日志或显示在用户界面上。MPPDB服务器日志将记录LOG、WARNING、ERROR级别的信息,而SQL用户界面将显示WARNING和ERROR级别的日志消息。Java Logger级别与GaussDB(DWS)的日志级别对应关系见下表。 表2 PL/Java日志级别 java.util.logging.Level GaussDB(DWS) 日志级别 SERVER ERROR WARNING WARNING CONFIG LOG INFO INFO FINE DEBUG1 FINER DEBUG2 FINEST DEBUG3 用户可以通过以下方式更改Java Logger的记录级别。例如通过下面的Java代码修改Java Logger级别为SEVERE,此时再记录WARNING级别的日志时,日志消息(msg)就不会再写入到GaussDB(DWS)日志中。 Logger log = Logger.getAnonymousLogger(); Log.setLevel(Level.SEVERE); log.log(Level.WARNING, msg);
  • 数组类型处理 GaussDB(DWS)支持基础数组类型的转换,只需要在创建函数时在数据类型后追加 [] 即可,例如: CREATE FUNCTION java_arrayLength(INTEGER[]) RETURNS INTEGER AS 'Example.getArrayLength' LANGUAGE JAVA; Java代码类似于: public class Example { public static int getArrayLength(Integer[] intArray) { return intArray.length; } } 那么下面的调用的语句后: SELECT java_arrayLength(ARRAY[1, 2, 3]); 得到预期结果应该如下所示: java_arrayLength --------------------- 3 (1 row)