2010-06-23 142 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作爲主鍵值,而新的一個沒有。