在现有表中强制外键关系

时间:2014-05-13 01:01:36

标签: mysql sql

我有表,有些列应该是外键;我怎么能强迫这种关系?

  

ALTER TABLE tbl1 ADD CONSTRAINT fk_user_id FOREIGN KEY(user_id)   引用tbl2(user_id);

但它给了我以下错误:

error code:1215: cannot add foreign key constraint!

这种情况下的解决方案是什么?

2 个答案:

答案 0 :(得分:1)

您可能会遇到外键约束错误的原因:

  1. 您没有将InnoDB用作所有表格的引擎
  2. 您正尝试在目标表上引用不存在的键。 确保它是另一个表上的键(它可以是主键 或独特的钥匙)
  3. 列的类型不相同(例外是列 在引用表上可以为空()。
  4. 检查这些。

    此外,您应该在运行DDL之前设置foreign_key_checks=0,这样您就可以按任意顺序创建表,而不需要在相关子表之前创建所有父表。

    字体:MySQL Error 1215: Cannot add foreign key constraint

答案 1 :(得分:0)

如果user_id的任何现有值与外表上的值不匹配或为null,则您将无法强制执行不可为空的外键约束。在强制执行约束之前,应首先将列值更新为引用的正确外部数据。