mysql - 强制现有表中的外键关系

标签 mysql sql

我有表,其中一些列应该是外键;我怎样才能强制这种关系?

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

但它给了我以下错误:

error code:1215: cannot add foreign key constraint!

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

最佳答案

可能出现外键约束错误的原因:

  1. 您没有使用 InnoDB 作为所有表的引擎
  2. 您正在尝试引用目标表上不存在的键。 确保它是另一个表上的键(它可以是主键) 或唯一键)
  3. 列的类型不相同(异常(exception)是列 引用表上的可以为空)。

检查这些。

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

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

关于mysql - 强制现有表中的外键关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23621259/

相关文章:

php - 如何修改此有效的 SQL SELECT/JOIN 查询以删除重复项?

可以选择 n 行排序依据然后返回 m 行的 SQL 查询

python - 用户输入到 mySQL 数据库

Python/MySQL 连接器 : Some queries hang based on the input

php - 如何使用 AJAX 使用查询的最后一个 ID 进行查询?

mysql - 如何从有条件的 3 个表中加入

sql - 从可用行“分配”的联接

php - MySQL查找给定长度的所有没有相关记录的周期

SQL 不返回正确的值

SQL Select 语句-多表允许空值