【问题标题】:Error in adding Foreign key using Mysql workbench使用 Mysql 工作台添加外键时出错
【发布时间】:2017-06-19 11:45:16
【问题描述】:

我正在将外键添加到我的表“empcompensation”中,引用另一个表“员工”。它显示错误。

ALTER TABLE `simhrmdb`.`empcompensation` 
ADD CONSTRAINT `Fk_employee`
  FOREIGN KEY (`employee`)
  REFERENCES `simhrmdb`.`employees` (`id`)
  ON DELETE CASCADE
  ON UPDATE CASCADE;

操作失败:将 SQL 脚本应用到 数据库。
错误 1452:无法添加或更新子行:外部 键约束失败
(`simhrmdb`.`#sql-c5c_6`, CONSTRAINT `Fk_employee` 外键 (`employee`) 参考 `employees` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) SQL 语句:ALTER TABLE `simhrmdb`.`empcompensation` 添加约束 `Fk_employee` FOREIGN KEY (`employee`) REFERENCES `simhrmdb`.`employees` (`id`) ON 更新级联时删除级联

我之前将“employees”表中的相同“id”添加到其他几个表中,并且效果很好。但现在它会产生错误。薪酬表是我添加的新表。

在那个错误日志中,我可以看到一些字母 #sql-c5c_6 。这个我不明白。

【问题讨论】:

标签: mysql


【解决方案1】:

这表示employee 列中的某些值无法在employees 表中找到。使用 LEFT JOIN 找出它们是什么

SELECT employee FROM empcompensation 
LEFT JOIN employees on employee = employees.id WHERE employees.id IS NULL

然后您必须弄清楚如何处理它们(删除它们,在员工表中创建相应的条目等)

【讨论】:

  • 也就是说,你当前的数据已经违反了约束,所以你需要先修复数据。
猜你喜欢
  • 1970-01-01
  • 2019-01-25
  • 2019-02-18
  • 1970-01-01
  • 2021-02-21
  • 2013-11-16
  • 2014-02-12
相关资源
最近更新 更多