【发布时间】:2015-12-03 14:20:56
【问题描述】:
旧电脑:MySQL 5.0.51 版
新电脑:MySQL 5.7.9 版
DDL 片段:
CREATE TABLE lookup (
keyvalue ENUM ('A', 'B', 'C', 'D') NOT NULL;
CONTSTRAINT lookuppk PRIMARY KEY (keyvalue)
);
CREATE TABLE othertable (
otherkey INT(5) NOT NULL AUTO_INCREMENT,
refkey CHAR(1),
CONSTRAINT otherpk PRIMARY KEY (otherkey),
CONSTRAINT reffk FOREIGN KEY (refkey) REFERENCES lookup(keyvalue)
);
在旧电脑上运行结果:没问题
在新计算机上运行时的结果:ERROR 1215 (HY000):无法添加外键约束
这是一个仅在我的家用机器上运行的实验性数据库,不适用于工作或现实生活。我最初是在大约四年前这样做的,现在我开始将东西迁移到新购买的家用电脑上。
错误似乎只是 FK 必须与引用列的数据类型完全匹配。事后看来,这是一个糟糕的设计,我年纪大了,也更聪明了,我可以改变。但让我好奇的是为什么旧的 MySQL 版本允许这样做。我浏览了文档,但找不到任何东西。
【问题讨论】:
-
CREATE TABLE 语句中没有定义引擎。看看一个是否是默认的 MyISAM。然后将其更改为 InnoDB。
标签: mysql enums foreign-key-relationship