MYSQL mysql 無法建立外來鍵約束 及 errno: 121錯誤
阿新 • • 發佈:2019-02-12
對mysql資料庫不太熟悉,今天遇到了外來鍵建立問題。alter外來鍵建立語句命令列下提示成功了,但就是沒看到外來鍵。
後來改用workbench工具來建立,發現是因為資料預設是採用的MyISAM儲存引擎,該引擎不支援外來鍵,需要修改引擎為InnoDB才可以。
我直接在workbench將表的引擎改為了InnoDB,發現還是不行,報1005錯誤:
[sql] view plaincopyprint?- 10:31:56 ALTERTABLE `cm_relation_contact_group` ADDCONSTRAINT `fk_test` FOREIGNKEY (`groupId` )
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了。
我在MYSQL中建立個表,就能報[Err] 1005 - Can't create table '.\qesplatform_dbdldx\p_users.frm' (errno: 121),沒有外來鍵,請問如何解決
(errno: 121), 這是外關鍵字名字重複的錯誤,即使是在不同的表中,外關鍵字的名字也不能重複
我的是FK_Reference_4 重複了,找個沒有的FK_Reference_54 就可以了