mysql新增外來鍵時報errno: 150錯誤的解決方法
阿新 • • 發佈:2019-02-06
最近在用資料庫時,新增外來鍵總是報錯Can't create table (errno: 150)。兩張建表命令分別是:
CREATE TABLE `resource_1` (
`id` int(20) unsigned NOT NULL auto_increment,
`provider` varchar(20) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=InnoDB
和
從網上查了下解決方法,主要是三種:CREATE TABLE `resource_2` ( `id` int(20) unsigned NOT NULL , `title` varchar(128) NOT NULL default '', FOREIGN KEY (`id`) REFERENCES `resource` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) TYPE=InnoDB
1.表型別需是InnoDB,其他型別不支援FOREIGN KEY ,這裡我已經設定成InnoDB了;
2.設定成外來鍵的兩個欄位型別要完全一樣,這個容易理解,這裡我也已經設定成一樣的了;
3.建外來鍵的那張表上的那個外來鍵欄位要建索引,這裡確實沒有想到,修改後建表成功!
這裡mark一下!CREATE TABLE `resource_2` ( `id` int(20) unsigned NOT NULL , `title` varchar(128) NOT NULL default '', UNIQUE KEY `index_id` (`id`), FOREIGN KEY (`id`) REFERENCES `resource_1` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) TYPE=InnoDB