我手动创建了数据库表,并且还手动创建了表中的外键约束,而没有使用迁移。现在,当我要删除一条记录时,出现以下错误-
违反完整性约束:无法删除或更新父行: 外键约束失败
注意:由于数据库已创建,我无法使用迁移。
答案 0 :(得分:0)
在外键上使用ON DELETE CASCADE
和ON UPDATE CASCADE
,例如:
...(create/alter Children table query)...
CONSTRAINT FK_ParentChild
FOREIGN KEY (parent_id) REFERENCES Parents(id)
ON UPDATE CASCADE ON DELETE CASCADE;
因此,您不必在删除父元素之前手动删除子元素。所有子记录都会随着父记录的删除而自动删除。
答案 1 :(得分:0)
我建议通过以下操作对此做进一步调查:
注意:
如果您需要在此期间更正数据,请确保 ,并且您确信数据库的数据完整性不会受到威胁 。在更正数据时,可以使用以下语句删除外键检查。
SET FOREIGN_KEY_CHECKS = 0;
SET FOREIGN_KEY_CHECKS = 1;
我承受不了足够的压力,记住一旦完成就打开外键检查,不要在生产数据库上执行此操作。复制数据库并在本地尝试操作,直到您确信自己的更正是100%安全的;)