【问题标题】:Cannot add foreign key in MySQL?不能在 MySQL 中添加外键?
【发布时间】:2015-11-20 02:41:25
【问题描述】:

这是我正在执行的语句和相关的错误,任何提示有什么问题以及如何进一步调试都值得赞赏。使用 MySQL Workbench/MySQL。

特别困惑这里的子行是什么意思?外键如何与子行相关?这里的子行是什么?

ALTER TABLE Orders
ADD CONSTRAINT fk_Customer FOREIGN KEY (CustomerID) 
REFERENCES Customers(CustomerID) 

错误代码:1452。无法添加或更新子行:外键 约束失败(test.#sql-ff_2, CONSTRAINT fk_Customer FOREIGN 关键(CustomerID)参考CustomersCustomerID))

【问题讨论】:

  • 可以thisthis 帮忙吗?
  • @KevinEsche,我的问题是在定义外键约束时发生的,而您提到的问题是在插入期间处理错误?请随时纠正我。
  • 查看第二个链接,确保您尝试引用的所有 id 都存在于引用表中。

标签: mysql sql foreign-keys ddl


【解决方案1】:

此错误意味着您的表包含您尝试创建的外键不应允许的数据。您可以使用查询来找到它们:

SELECT *
FROM   orders
WHERE  customerid NOT IN (SELECT customerid FROM customers)

如果您确定这些行确实有问题,您可以使用类似的delete 语句来删除它们:

DELETE FROM orders
WHERE  customerid NOT IN (SELECT customerid FROM customers)

【讨论】:

  • 感谢并遇到错误,错误代码:1064。您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 2 行的“WHERE customerID NOT IN (SELECT customerid FROM Orders)”附近使用正确的语法
  • @LinMa 关于哪个声明? selectdelete?
  • 嗨 Mureinik,删除声明。
  • @LinMa 由于某种原因我错过了from 关键字。已修复 - 请查看我的更新答案。
猜你喜欢
  • 2011-08-11
  • 2014-09-24
  • 2019-05-04
  • 2016-01-05
  • 1970-01-01
  • 1970-01-01
  • 2021-11-12
相关资源
最近更新 更多