mysql数据库迁移到⼈⼤⾦仓数据库问题记录清单
(1)数据库类型不⽀持异常:dbType not support : null, url jdbc:kingbase8。
解决⽅法:
数据源配置:
spring:
datasource:
druid:
stat-view-servlet:
enabled: true
loginUsername: admin
loginPassword: 123456
dynamic:
druid:
initial-size: 5
min-idle: 5
maxActive: 20
minEvictableIdleTimeMillis: 300000
mysql连接工具validationQuery: SELECT 1 FROM DUAL
filters: 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”导致查询结果异常。在fig配置⽂件中修改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 ZHYXQ from sys_user;
但是在⼈⼤⾦仓数据库中异常:SQL 错误 [42883]: 错误: 函数 FROM_UNIXTIME(CHARACTER VARYING) 不存在。Hint: 没有匹配指定名称和参数类型的函数。
解决⽅法:原因为⼈⼤⾦仓不存在FROM_UNIXTIME函数。修改为:
Select cast(ZHYXQ as TIMESTAMP) as ZHYXQ from sys_user;
或者Select to_timestamp(ZHYXQ,'yyyy-mm-dd hh24:mi:ss.us') as ZHYXQ from sys_user。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。