mysql - 向mysql中的列添加外键不会创建外键

标签 mysql sql database

我已经有两个表(书籍和作者)。两张 table 都已经满了。在 book 表中,author_id 列指向作者。没有外键约束。我想使用此查询添加外键约束:

ALTER TABLE Book
ADD CONSTRAINT fk_book$author
FOREIGN KEY (author_id)
REFERENCES Author(author_id)

这返回给我这个结果: MySQL 返回一个空结果集(即零行)。

我查看了信息模式数据库的约束表,但没有看到任何关于外键的新记录。因此我猜什么也没有发生。

表簿有超过60000条记录。

是否存在任何限制,使我无法在具有多于 xyzvw 记录的表中使用“外键”更改表? 我做错了什么?

我正在运行 MySQL 版本 5.6.17。

最佳答案

请检查以下几点-

  1. 表引擎应该是innodb。
  2. 父/子两个表中的链接列的列属性(数据类型、长度等)应相同。
  3. 引用的列应在父表中建立索引。
  4. 如果表已有数据,则引用列中的每个子值也应存在于父表中。

如果以上几点都没有问题,那么分享一下mysql抛出的错误详细信息。

关于mysql - 向mysql中的列添加外键不会创建外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32945579/

相关文章:

php - php sql中的UPDATE不更新数据库

sql - 如何防止数据库触发器递归?

sql - 有没有办法在 postgresql 中使用 qualify

php - 尝试一次更新两个表 MySQL

mysql如何知道我搜索的数据库的名称

mysql - 添加子查询

mysql - Zend框架2控制台路由mysql错误

sql - 如何扩展sqlite3支持的最大SQL变量数?

database - 迁移 CoreData 中的实体父级

mysql - 将 MySQL 转储导入 Postgres 并转义\