MySQL外键约束 - 无法添加或更新子行

时间:2014-07-21 20:23:11

标签: mysql database foreign-key-relationship

我从SQL转储导入数据库,我收到此错误:

Cannot add or update a child row: a foreign key constraint fails 
(`database_name`.`#sql-808_37`, CONSTRAINT `FK_z_log_zemail` FOREIGN KEY (`ID_evn`)
REFERENCES `z_event` (`ID_evn`) ON DELETE SET NULL)

Operation failed with exitcode 1"

我知道这意味着子表中的外键不在父表z_event中,因此出错。

问题:

  1. 导入sql dump的过程是否从此行中止? (exitcode 1操作失败)

  2. 在不影响数据完整性的情况下,是否存在绕过此错误的“干净”方法?或者不涉及删除约束的任何其他解决方案?

  3. 为什么会这样?表之间的一些不良关系设置?就像从父表中删除某些内容一样,子表未更新?

  4. sql转储是否有可能被破坏?或者这个错误很常见?我想知道我是否应该担心..

1 个答案:

答案 0 :(得分:2)

数目:

  1. 这取决于您如何恢复数据库。如果你正在运行一个脚本制作插入它可能已经跳过了问题并继续,但如果你正在进行批量插入(使用COPY)它将完全失败。

  2. 无法清理旁路。

  3. 可能转储的顺序错误。所需的表位于引用它的表的下方(或之后)。在您的情况下,您必须确保首先加载z_event。

  4. 可能它已损坏,但根据我的经验,第3条是通常的解释。