(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
        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”导致查询结果异常。在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 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。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐