我有一个封闭源代码升级应用程序,它将数据库从旧格式迁移到新格式(创建新表并将数据从旧表迁移到新表)。

应用程序崩溃,并带有MySQLIntegrityConstraintViolationException。它没有给我提供具有主键冲突的表的名称,也没有给出损坏的SQL查询的内容。

我可以切换任何MySQL服务器选项以向我提供更多的故障排除信息吗?可能是查询失败的文本或违反的主键约束的名称?

最佳答案

您可以启用常规日志文件:http://dev.mysql.com/doc/refman/5.1/en/query-log.html。通过这种方式,可能会看到服务器在哪一点停止处理查询。

您还可以运行MySQL命令show processlist来查看当时正在处理哪些查询。

还可以查看所有其他特定于应用程序的错误日志。

首先尝试是在迁移过程中禁用外键检查:
SET foreign_key_checks = 0;

第一个猜测是,旧服务器支持0作为主键值,而新服务器不支持。

关于mysql - 对MySQLIntegrityConstraintViolationException进行故障排除,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3105655/

10-09 18:55