1、SQL 错误 [42P01]: ERROR: relation "CHECK_PARAM" does not exist
解决:非PUBLIC表,无需迁移
2、SQL 错误 [42809]: ERROR: "dblink_pkey_results" is a composite type
解决:使用了错误的方式调用数据库对象
3、Error at index 2 in: "07+08" ABSTIME 带时区的日期格式转换
解决:
1)查询到kingbase数据库之前使用的时区UTC:XXXX+08
2)查询到Mysql数据库的时区是GMT
3)已知UTC和GMT时区,在时间上没有区别,所以直接把旧表拷贝一份备份表,字段类型改成TIMSTAMP自动去掉了时区后缀再用备份表迁移过来
4)后端Mysql数据库链接配置文件要设置永久时区为GMT:
4、SQL 错误 [1071] [42000]: Specified key was too long; max key length is 3072 bytes
语法错误或者违反接入规则
解决:主键长度减少到64
5、不能识别的字段类型:“BPCHAR“
解决: BPCHAR是VARCHAR的别名,改用VARCHAR
6、SQL 错误 [1426] [42000]: Too-big precision 131089 specified for 'TRY_TIMES'. Maximum is 65.
解决:DECIMAL最大精度减少到65
7、SQL 错误 [1292] [22001]: Data truncation: Incorrect datetime value: '1820-01-01 18:20:00' for column 'DDSJ' at row 1
解决:日期过于“历史”,字段值改成正确范围内的日期后再迁移
8、无主键的表无法修改数据:
解决:设置主键后再修改
ALTER TABLE PUBLIC.ZHZX_SPXJ ADD CONSTRAINT ZHZX_SPXJ_PKEY PRIMARY KEY(OBJUID)
附:迁移后的mybaties后端连接MySQL数据源后遇到的问题
9、java.sql.SQLSyntaxErrorException: Every derived table must have its own alias
MySQL要求每个派生表都必须有自己的别名:(派生表指FROM 子句中的子查询)
解决:在子查询语句括号外层添加一个空格和别名
10、Duplicate column name 'create_by_orgin'
MySQL严格校验查询出来的字段不能重复
解决:select语句去掉重复的字段名
11、You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'describe ……
MySQL的执行语句中,表字段不能用关键字describe
解决:sql代码给describe加单引号
12、bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: Column 'create_by_dept' specified twice
MySQL严格校验不能有重复的字段
解决:insert语句去掉重复的字段名
13、org.springframework.jdbc.BadSqlGrammarException:
### Error querying database. Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"sheet_id" = info."sheet_id"
WHERE info.sheet_id = '7cf0e44961d14b49944c' at line 6
MySQL语句的表名、字段名不能有双引号
解决:去掉双引号
14、统计出来的数量不一样,排查出问题出现在length函数的区别:MySQL中,返回字符串的字节长度。 KingbaseES返回字符串的字符长度。
解决:length函数换成char_length
参考网址:
KingbaseES与MySQL的兼容性说明 — KingbaseES产品手册