0
舊電腦:MySQL版本5.0.51MySQL曾經允許一個CHAR列到FK到另一個表的ENUM列,但不再是?
新計算機: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)
);
結果時,舊計算機上運行:沒問題
結果當在新計算機上運行時:錯誤1215(HY000):無法添加外鍵約束
這是一個實驗數據庫只在我的家用機器上運行,而不是工作或現實生活中的任何東西。我最初是在四年前做過這件事的,而且我正在開始將東西遷移到新購買的家用電腦上。
錯誤似乎只是一個FK必須匹配引用列的數據類型正好。事後看來,這是一個糟糕的設計,我年紀大了,而且我可以改變。但是我好奇的是,爲什麼一個較老的MySQL版本允許這樣做。我查看了文檔,但找不到任何東西。
在CREATE TABLE語句中沒有定義任何引擎。看看是否是默認的MyISAM。然後改變它InnoDB。 –