报错:迁移过程中出现错误,错误信息为:undefined
原因及方案:这种错误一般是由于开启了同步数据集导致的,在平台检查是否打开了同步数据集,如果是,则参考文档中关于使用同步数据集情况下如何迁移finedb。
4.2 报错2
报错:com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationExceprion:Cannot add or update a child row:a foreign key constraint fails(‘testfs’.‘fr_t_companyrole’,CONSTRAINT‘fr_fk_COMPANYROLE__p’FOREIGN KEY(‘postid’)REFERENCES‘fr_t_post’(‘id’))
原因及方案:出现这个错误通常是由于数据库字符编码的问题,检查数据库字符集编码并在数据连接中加入强制编码,注意格式正确。示例格式:jdbc:mysql://192.168.100.83:3306/testfs?useUnicode=true&characterEncoding=UTF-8。
4.3 报错3
报错:java.lang.ClassCast Exception:java.lang.Long cannot be cast to jaca.sql.Timestamp原因及方案:由于Oracle对字段格式有较严格要求,某些数据存入数据库时无法识别出正确类型,这种情况比较罕见,一种方式是查看报错信息,找到对应数据,修改或删除,再做迁移,正在修改这个bug,这个问题很快就会得到解决。
4.4 报错4
报错:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:Table 'rssystem.fr_process_task_impl' doesn't exist原因及方案:这种情况是由于部分MySQL小版本存在的bug导,致同一个表中无法存储超过一个timestamp类型且默认不为空的字段导致的,现在代码已经修改过,更新jar包后就不会出现。
4.5 报错5
报错:com.mysql.jdbc.exceptions.jdbc4.MySQLSynataxErrorException:Table'newdb.fr_reportletentry'doesn't exist
原因及方案:这种情况通常是第一次迁移后未重启直接再次进行迁移导致的,解决办法是,重启服务器,删除第一次迁移生成的表再次进行迁移。
4.6 报错6
报错:java.sql.SQLException:ORA-00904:"mobileCoverId":标识符无效原因及方案:这种问题是由于目标数据库存在手动新建的数据表,并且少了对应的数据列,请清空后再迁移;出现类似标识符无效的情况,通常是由于目标数据库存在缺少数据列的数据表,也可能是由于原工程finedb表本身存在缺少相关信息的情况,这种情况下,需要对照日志,检查内置finedb对应表是否缺少列。
4.7 报错7
报错:Failure occured during job recovery
原因及方案:这种错误目前只遇到一次,客户的数据库部署在阿里云上,版本号是MySQL 5.6.16,相同版本数据库在本地未能还原这个错误,错误出在quartz.jar,由于本地无法还原,目前只能暂时屏蔽掉定时任务的迁移才可以迁移成功,如果本地也遇到这个错误请提出。
4.8 报错8
报错: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 'OPTION SQL_SELECT_LIMIT=DEFAULT' at line 1
原因及方案:jdbc在连接数据库时候会发送测试语句SET OPTION SQL_SELECT_LIMIT=DEFAULT
这在mysql5.6以下版本是可以的 ,但是5.6不再支持SET.
升级驱动到对应数据库版本即可, 比如是5.7的mysql, 用mysql-connector-java-5.1.39-bin.jar
4.9 报错9
报错:
java.sql.SQLException:Incorrect string value:'\xE5\x9F\x8E\xE5\xB8\x82...'for column 'name' at row 1原因及方案:这种情况是由于数据库字符集设置的问题,修改数据库字符集设置即可。
4.10 报错10
报错:java.sql.SQLException:ORA-01400:无法将 NULL 插入(“KYYLA”.“FR_PROCESS_REMIND_TOAST”.“message”)
原因及方案:这种情况是由于部分MySQL小版本存在的bug导,致同一个表中无法存储超过一个timestamp类型且默认不为空的字段导致的,现在代码已经修改过,更新jar包后就不会出现。
4.11 报错11
报错:com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationExceprion:Cannot add or update a child row:a foreign key constraint fails(‘fsd’.‘FR_T_CustomRole_User’,CONSTRAINT‘fr_fk_CustomRole_User__U’FOREIGN KEY(‘Userid’)REFERENCES‘FR_T_USER’(‘id’))
原因及方案:这种错误通常是FR_T_USER表里有同名用户(比如USER 和user这种只有大小写区别的字符串),已经加了打印信息,从日志能够看到相应报错
注:如果遇到某某表不存在的情况,请更新jar。