为什么MySQL在我没有的桌面上给我一个外键约束错误?

时间:2014-05-18 14:20:47

标签: mysql

我正在运行一系列升级脚本。作为一个注释,在早期的脚本中,有很多这些:

  

ALTER TABLE文件     DROP FOREIGN KEY files_ibfk_1,     DROP FOREIGN KEY files_ibfk_2;

但是,这些键不存在......

现在我收到了错误......:

  

无法添加或更新子行:外键约束失败(pacsdbcmi#sql-536_77,CONSTRAINT #sql-536_77_ibfk_1 FOREIGN KEY(series_fk)参考seriespk))

什么是#sql-536_77?有人可以解释这意味着什么吗?我没有名为#sql-536-77的表,也没有名为#sql-536_77_ibfk_1的系列密钥

由于

1 个答案:

答案 0 :(得分:1)

这是因为还有另一个表对于父表是外来的。CASCADE关系应该在那里。所以在ALTER父表外键之前请删除现有的CASCADES < / p>

                                     OR

使用

SET foreign_key_checks = 0;

AND

ALTER TABLE files DROP FOREIGN KEY files_ibfk_1, DROP FOREIGN KEY files_ibfk_2;

然后

SET foreign_key_checks = 1;

通过将外键检查设置为0,您可以使用ALTER表。完成对表格的操作后,您可以再次将密钥检查重置为1,现在一切都恢复原状。