2015-10-05 36 views
0

我已经有两个表(书和作者)。两个表都已经填满了。在书籍表中是列author_id指向作者。没有外键约束。我想使用此查询添加外键约束:在mysql中向列添加外键不会创建一个

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

这将返回我这样的结果: MySQL返回的查询结果为空(即零行)。

我查看了信息模式DB的约束表,但没有看到有关外键的任何新记录。所以我猜没有什么事

表书有60000多条记录。

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

我正在运行MySQL版本5.6.17。

+1

你使用什么表引擎,innodb或myisam(或特殊的东西)?如果它已更新,是否检查了书籍表的create table语句(show create table ...)? – Shadow

+0

这将是一个好主意,显示问题 – RiggsFolly

+0

我使用myisam的2个表的架构。该引擎不支持外键。 – mark

回答

1

请检查下面点 -

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

如果以上所有点都没有问题,那么就分享由mysql引发的错误细节。

+0

谢谢你回答Zafir。我发现我使用myisam,并且此引擎不支持外键。因此它不起作用。 – mark