2010-06-23 144 views
1

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

应用程序因MySQLIntegrityConstraintViolationException异常而崩溃。它不会给我带有主键冲突的表的名称或破碎的SQL查询的内容。

是否有任何MySQL服务器选项,我可以切换给我更多的故障排除信息?也许是失败的查询的文本或违反主键约束的名称?

+0

错误通常是由于与主键或唯一键约束的冲突。你有没有设置在桌子上? – 2010-06-23 21:27:08

+0

数据库中有大量表格,其中大多数表格具有主要/唯一约束。我的问题是确定哪些约束被违反。 – David 2010-06-24 13:00:48

回答

0

您可以启用常规日志文件:http://dev.mysql.com/doc/refman/5.1/en/query-log.html。这样可以看到服务器停止处理查询的时间点。

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

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

第一次尝试可能是在迁移期间禁用外键检查: SET foreign_key_checks = 0;

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