1. 程式人生 > >mysql新增外來鍵時報errno: 150錯誤的解決方法

mysql新增外來鍵時報errno: 150錯誤的解決方法

最近在用資料庫時,新增外來鍵總是報錯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.建外來鍵的那張表上的那個外來鍵欄位要建索引,這裡確實沒有想到,修改後建表成功!

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
這裡mark一下!