人大金仓数据库常见问题(持续更新)
目录
1.查看大小是否敏感写参数,提示:未认可的配置参数 "case_sensitive"
2.sys_backup.sh init时提示can not connect the primary node
3.设置逻辑备份运行脚本时提示错误are not allowed to use this program (crontab)
4.修改表字段类型bit为int失败,提示SQL 错误[42804]: ERROR: default for column "prescript" cannot be cast automaticallyto type integer
5.string_agg和group_concat函数
6.查询锁表语句
7.KES V8R6集群物理备份初始化时提示more than one primary cluster found
8.com.kingbase8.util.KSQLException: An I/O error occurred while sending to the backend.
10.海光+方德环境安装时提示“Exception in thread"main" java.lang.UnsupportedclassVersionError: com/zerog/lax/LAX : Unsupported major .minor version 52.0
11.业务表与系统表冲突时,修改search_path
1.查看大小是否敏感写参数,提示:未认可的配置参数 "case_sensitive"
在V8R6C005之后的版本查询大小写敏感参参数为show enable_ci;之前的版本用show case_sensitive
2.sys_backup.sh init时提示can not connect the primary node
# pre-condition: check the non-archived WAL filesERROR: can not connect the primary node 192.168.56.112 by ksqlHINT: may use sys_encpwd to setup .encpwd*****注意配置中的_single_bin_dir 参数是Server/bin
3.设置逻辑备份运行脚本时提示错误are not allowed to use this program (crontab)
情景1:HiSilicon Kunpeng-920 / ky10
/etc/cron.allow 文件添加kingbase用户后依然提示报错。
问题:
[kingbase@kylinv10sp1 R6logic_backup-final]$ crontab -l
You (kingbase) are not allowed to use this program (crontab)
See crontab(1) for more information--注意权限,检查/usr/bin/crontab是否有特权
[root@kylinv10sp1 bin]# ls -al crontab
-rwxr-xr-x 1 root root 68248 Apr 1 2020 crontab
[root@kylinv10sp1 bin]# chmod u+s /usr/bin/crontab
[root@kylinv10sp1 bin]# ls -al crontab
-rwsr-xr-x 1 root root 68248 Apr 1 2020 crontab
[root@kylinv10sp1 bin]# su - kingbase
Last login: Wed Feb 21 11:41:48 CST 2024 on pts/3
[kingbase@kylinv10sp1 ~]$ crontab -l
no crontab for kingbase
情景2:统信操作系统,先给777权限,再给s权限
[root@localhost insatll]# chmod 777 /usr/bin/crontab
[root@localhost insatll]# chmod u+s /usr/bin/crontab
[root@localhost insatll]# ls -rtl /usr/bin/crontab
-rwsrwxrwx 1 root root 63160 3月 14 05:47 /usr/bin/crontab
4.修改表字段类型bit为int失败,提示SQL 错误[42804]: ERROR: default for column "prescript" cannot be cast automaticallyto type integer
原bit字段有一个默认值,导致修改失败,先取消默认值,再执行修改字段即可。
ALTER TABLE tc_geo_address_catalog
ALTER COLUMN prescript
SET DEFAULT NULL;
alter table tc_geo_address_catalog alter column prescript type int using id ::int;
5.string_agg和group_concat函数
pg模式用string_agg(),oracle模式用group_concat(),注意参数为text,若传入的参数类型不正确,则会报错。
重写:
CREATE OR REPLACE FUNCTION F_CONCAT(TEXT,TEXT,TEXT) RETURNS TEXT AS
$$
SELECT $1||$3||$2;
$$ LANGUAGE SQL STRICT;
CREATE AGGREGATE group_concat(TEXT,TEXT)(SFUNC=F_CONCAT,STYPE=TEXT);
6.查询锁表语句
SELECT blocked_locks.pid AS blocked_pid,blocked_activity.usename AS blocked_user,blocking_locks.pid AS blocking_pid,blocking_activity.usename AS blocking_user,blocked_activity.query AS blocked_statement,blocking_activity.query AS current_statement_in_blocking_process,blocked_locks.mode ,blocked_locks.locktypeFROM pg_catalog.pg_locks blocked_locksJOIN pg_catalog.pg_stat_activity blocked_activity ON blocked_activity.pid = blocked_locks.pidJOIN pg_catalog.pg_locks blocking_locksON blocking_locks.locktype = blocked_locks.locktypeAND blocking_locks.database IS NOT DISTINCT FROM blocked_locks.databaseAND blocking_locks.relation IS NOT DISTINCT FROM blocked_locks.relationAND blocking_locks.page IS NOT DISTINCT FROM blocked_locks.pageAND blocking_locks.tuple IS NOT DISTINCT FROM blocked_locks.tupleAND blocking_locks.virtualxid IS NOT DISTINCT FROM blocked_locks.virtualxidAND blocking_locks.transactionid IS NOT DISTINCT FROM blocked_locks.transactionidAND blocking_locks.classid IS NOT DISTINCT FROM blocked_locks.classidAND blocking_locks.objid IS NOT DISTINCT FROM blocked_locks.objidAND blocking_locks.objsubid IS NOT DISTINCT FROM blocked_locks.objsubidAND blocking_locks.pid != blocked_locks.pidJOIN pg_catalog.pg_stat_activity blocking_activity ON blocking_activity.pid = blocking_locks.pidWHERE NOT blocked_locks.granted;
7.KES V8R6集群物理备份初始化时提示more than one primary cluster found
经排查,本地测试服务器是采用nat+host-only模式,且虚拟机时复制的方式,nat网卡的mac地址和ip都没有变化,修改或者删除网卡信息后,执行初始化脚本成功。
8.com.kingbase8.util.KSQLException: An I/O error occurred while sending to the backend.
show tcp_keepalives_idle; 修改为tcp_keepalives_idle = 60
9.could not open shared memory segment "/kingbase.1416331144": No such file or directory (SQLSTATE 5
/data/kingbase/data/kingbase.conf 里面找到dynamic_shared_memory_type 参数,改为dynamic_shared_memory_type = sysv
重启数据库
10.海光+方德环境安装时提示“Exception in thread"main" java.lang.UnsupportedclassVersionError: com/zerog/lax/LAX : Unsupported major .minor version 52.0
通过Unsupported major.minor version 52.0信息基本可以确定是由于JDK版本不匹配导致的安装报错,根据错误信息52得知,要求的JDK对应版本号码为52.52对应JDK 1.8版本(Unsupported major.minor version 52.0信息为要求JDK对应的版本,而不是报错的JDK版本).高于52的jdk都可以使用。
11.业务表与系统表冲突时,修改search_path
当 Kingbase 数据库中的业务表与系统表发生名称冲突时,可以通过修改 search_path 来解决这个问题。进入到对应的库,执行
alter database dbname set search_path=schema_name,'$user',public,sys,sys_catalog,pg_catalog; ---必须加上sys,sys_catalog,pg_catalog
select sys_reload_conf();
重连客户端,重启应用后生效,若应用重启后依然没有生效,则检查jdbc url ,url 里不再需要配置Currentschema 参数,因为带模式名时忽略search_path。
jdbc.master.url=jdbc:kingbase8://xxx.xxx.xxx.xxx:54321/db1?currentSchema=schenam_name 修改为jdbc.master.url=jdbc:kingbase8://xxx.xxx.xxx.xxx:54321/db1
12.ksql test/kingbase system 登录后无权限建库,建表“can not create database in current database”
该金仓库兼容模式为SQLSERVER, 单兼容模式为sqlserver 时,需要登录master 库进行建库,手动新建模式后,再进行建表;