我在我的计算机(OSX10.13.6)上导入MySQL DB的备份,并运行以下脚本:
ALTER TABLE user_activity_data
ADD FOREIGN KEY (article_id) REFERENCES Article(id);一切都很好:外键被添加。
我在原始机器(Debian /Linux8 (jessie))上运行相同的脚本,该脚本在错误消息中失败:
errno: 150这两列的类型完全相同,:int(11)
这怎麽可能?这是一个备份,所以它是同一个DB。它确实是两个不同版本的MySQL.但它们显然应该是兼容的。
这是脚本失败的MySQL版本:
+-----------------+
| 5.5.60-0+deb8u1 |
+-----------------+以及它成功的版本:
+-----------+
| 5.7.22 |
+-----------+发布于 2018-08-14 12:14:13
您可能需要确保外键具有与主键完全相同的类型。
MySQL 5.5可能更宽容一些,而MySQL 5.7则更严格一些。考虑在这两种情况下使用相同的版本。
发布于 2018-08-14 15:13:18
啊哈!找到了,但很下流
看来,
因此,问题是REFERENCES子句的对象应该是article(id)而不是Article(id)。
https://stackoverflow.com/questions/51840856
复制相似问题