2012-01-16 52 views
3

我无法将外键约束添加到我的数据库。MySQL无法将外键约束添加到表

我在所有表上运行InnoDB引擎,并确保两个表中的数据类型和大小相同。

此外,我已经尝试使用MySQL命令行,phpMyAdmin和MySQL工作台,但没有运气。

由于在MySQL工作台中不允许我检查索引列,也没有选择引用列,所以还有另一个我忽略的问题。

有什么我应该找的东西?

我在几乎所有的表格中都有测试数据,那会很重要吗?

编辑:当我看到一个错误,通常是“#1005 - 不能创建表'db_name。#sql-43d_8e'(errno:150)”,根据文档说到数据不匹配。否则MySQL Workbench不会让我这样做,所以我不知道这个问题。

+1

如果数据不匹配,则可能很重要... – prodigitalson 2012-01-16 18:12:31

+0

所有引用数据都是INT(10)类型... – guyfromfl 2012-01-16 18:13:06

+0

不,我的意思是如果值不匹配外国表。 – prodigitalson 2012-01-16 18:13:39

回答

1

如果您有数据,那么无法正确使用外键正确链接,例如您在id_article = 10的“comments”中输入内容,但在“articles”中没有输入id = 10 ..在这种情况下,您不能添加外键

+0

嗯让我清除表格,然后再试一次......由于我添加了数据而没有约束来保持数据的完整性,这可能是问题所在。 – guyfromfl 2012-01-16 18:14:39

4

您还应该检查以确保您的列匹配。我遇到的问题是,我没有注意到一个是有符号整数,另一个没有签名。

1

我有同样的问题,被引用表中的主键的数据类型和外键是相同的,但我无法创建第二个表,因为mysql无法添加外键约束。出于某种原因,它是我创建表格的顺序。如果我创建第一个表,添加数据,然后创建第二个表,如果我创建第一个表和第二个表之前,我将数据添加到第一个表中没有错误消息发生错误。