有兩張表A和B,A的主鍵是B表某一列的外鍵。
現在在一個事務里:
先在A表中插入幾條記錄,拿到主鍵id,然后用這些id去插入B表,
結果是B表的插入有些成功了,有些卻失敗了,報錯:
Error updating database. Cause: java.sql.SQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (`cgds_test`.`mutation`, CONSTRAINT `mutation_ibfk_3` FOREIGN KEY (`SAMPLE_ID`) REFERENCES `sample` (`INTERNAL_ID`) ON DELETE CASCADE)
這會是什么原因?
uj5u.com熱心網友回復:
我又做了一次嘗試,在事務開始時,禁用了外鍵約束,然后在A表插入了一萬條左右的記錄,然后拿到它們的id作為外鍵插入到B表,最后事務提交后的結果是:
B表中只有一個外鍵id在A表中不存在,也就是A表丟失了一條。
有幾個資訊:
A表的插入使用的是mybatis的foreach回圈,主鍵id也是通過useGeneratedKeys屬性取到的;
mysql資料庫innodb_flush_log_at_trx_commit配置值是0。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/7150.html
標籤:MySQL
