我有一个封闭源代码升级应用程序,它将数据库从旧格式迁移到新格式(创建新表并将数据从旧表迁移到新表)。
应用程序崩溃,并带有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/