mysql添加外键时报errno: 150错误的解决方法

来源:互联网 发布:淘宝买vpn搜什么 编辑:程序博客网 时间:2024/06/10 23:50

最近在用数据库时,添加外键总是报错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一下!

0 0
原创粉丝点击