600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > mysql数据库迁移到人大金仓数据库问题记录清单

mysql数据库迁移到人大金仓数据库问题记录清单

时间:2022-09-14 01:46:34

相关推荐

mysql数据库迁移到人大金仓数据库问题记录清单

(1)数据库类型不支持异常:dbType not support : null, url jdbc:kingbase8。

解决方法:

数据源配置:

spring:datasource:druid:stat-view-servlet:enabled: trueloginUsername: adminloginPassword: 123456dynamic:druid:initial-size: 5min-idle: 5maxActive: 20minEvictableIdleTimeMillis: 300000validationQuery: SELECT 1 FROM DUALfilters: stat,wall,slf4j

去掉filters中的wall配置,改为:filters: stat,slf4j。

(2)数据源连接拒绝异常:com.kingbase8.util.KSQLException: Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.

解决方法:数据源中的url: jdbc:kingbase8:192.168.132.11:54321/test,改为:jdbc:kingbase8://192.168.132.11:54321/demo。少了“//”会读取默认配置,即:host=localhost,port=5432。

(3) 表数据字段存在空字符串,但是无法查询到该条数据。如查询语句:

select *from sys_depart where parent_id = '',没有返回查询结果。

解决方法:在客户端连接工具执行:show ora_input_emptystr_isnull,发现结果是on,即配置了“空字符串默认被转为NULL”导致查询结果异常。在kingbase.config配置文件中修改ora_input_emptystr_isnull=off,保存并重启数据库:sys_ctl restart。

(4) 数据库中存在表sys_user,人大金仓数据库存在系统表sys_user,表冲突导致代码中查询的时候查的是系统表sys_user,而不是我们建的表。

解决方法:设置普通用户忽略系统表。system登录数据库,执行:

alter system set search_path = "$USER", PUBLIC,SYS_CATALOG;

select sys_reload_conf(); #这个语句是让上面的命令生效的。

(5)mysql中某张表字段类型为tinyint(1),使用人大金仓数据迁移工具迁移后该字段类型变为BOOLEAN,导致代码中的Integer字段无法转换数据类型报错。

解决方法:方法1:代码中的Integer字段类型改为boolean,这样在mysql和人大金仓数据库都能正确映射值。方法2:人大金仓数据迁移工具迁移数据时设置tinyint类型映射转换使用tinyint类型。

(6)数据类型转换错误,字符串转为无符号整型时失败。Mysql能使用如下语句能执行成功:

SELECT max(cast(querry_no AS UNSIGNED )) AS querry_no

FROM querry_list WHERE querry_no LIKE CONCAT('test','%')

但是在人大金仓数据库中异常:com.kingbase8.util.KSQLException: 错误: 类型 "UNSIGNED" 不存在。

解决方法:修改为:SELECT max(cast(querry_no AS INTEGER)) AS querry_no

FROM querry_list WHERE querry_no LIKE CONCAT('test','%') 。

(7)字符串格式时间转换异常。字段ZHYXQ的值为:2030-05-01T07:54:10.843Z格式,需要转为:2030-05-01 07:54:10.843。Mysql执行如下语句能正常执行:

Select FROM_UNIXTIME(ZHYXQ) as ZHYXQfrom sys_user;

但是在人大金仓数据库中异常:SQL 错误 [42883]: 错误: 函数 FROM_UNIXTIME(CHARACTER VARYING) 不存在。Hint: 没有匹配指定名称和参数类型的函数。

解决方法:原因为人大金仓不存在FROM_UNIXTIME函数。修改为:

Select cast(ZHYXQ as TIMESTAMP) as ZHYXQfrom sys_user;

或者Select to_timestamp(ZHYXQ,'yyyy-mm-dd hh24:mi:ss.us') as ZHYXQfrom sys_user。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。