MySQL:使用FK约束调试失败删除

时间:2016-02-10 14:37:10

标签: mysql foreign-keys foreign-key-relationship

如果由于外键约束导致删除失败,如何调试mysql的删除?

示例:

我执行声明:

DELETE FROM SCHEMA_A.TABLE_A WHERE id=1;

并收到错误:

ERROR 1451: Cannot delete or update a parent row: a foreign key constraint fails (`SCHEMA_A`.`TABLE_B`, CONSTRAINT `FK123` FOREIGN KEY (`id`) REFERENCES `TABLE_C` (`id`) ON DELETE CASCADE)

现在,正如您所看到的,有一个" ON DELETE CASCADE"对于约束,因此这个问题似乎不仅包括约束。此外,我不直接从TABLE_C删除。

因此,我上面的问题与找到这种错误的真正原因有关。例如,获得类似"依赖图"的内容会很有帮助。 /"堆栈跟踪"删除路径(例如,TABLE_A FKxy导致删除TABLE_Y的条目与FKz导致删除TABLE_C中的条目)或实际上尝试删除哪些行。

1 个答案:

答案 0 :(得分:0)

您应该能够使用此声明检查外键

SELECT TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME,REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE REFERENCED_TABLE_NAME = '<table>';