mysql 無法創建外鍵約束

對mysql數據庫不太熟悉,今天遇到了外鍵創建問題。alter外鍵創建語句命令行下提示成功了,但就是沒看到外鍵。

後來改用workbench工具來創建,發現是因爲數據默認是採用的MyISAM存儲引擎,該引擎不支持外鍵,需要修改引擎爲InnoDB纔可以。

我直接在workbench將表的引擎改爲了InnoDB,發現還是不行,報1005錯誤:

10:31:56	ALTER TABLE `cm_relation_contact_group`     ADD CONSTRAINT `fk_test`    FOREIGN KEY (`groupId` )    REFERENCES `cm_group` (`id` )    ON DELETE NO ACTION    ON UPDATE NO ACTION  , ADD INDEX `fk_test` (`groupId` ASC)	Error Code: 1005. Can't create table 'callcenter.#sql-728_5c92' (errno: 150)

上網google了一把,大家總結了下,大致有以下原因:

1、外鍵的引用類型不一樣,主鍵是int外鍵是char 
2、找不到主表中 引用的列 
3、主鍵和外鍵的字符編碼不一致 
4.還有要建立外鍵的話,要先建立索引。沒有建立索引也會出錯。
 

我逐個檢查了下,都沒問題。難道是每個表都有引擎設置,打開被引用表,發現引擎還是MyISAM,修改過來後就OK了。

哭感覺比oracle、sqlserver複雜啊,不知道這樣有什麼好的好處,看來得好好學習下mysql了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章