文档章节

MYSQL ALTER Can't assign foreign key (errno: 150)

liuhuics10
 liuhuics10
发布于 2016/07/19 19:45
字数 329
阅读 11
收藏 0

现在有两张已建成的表,表1 city结构:

CREATE TABLE `city` (
  `id` bigint(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `address` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

另有一张表 region,内有一列city_id对应city表的id:

CREATE TABLE `region` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `region_name` varchar(255) NOT NULL,
  `city_id` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;

这时需要在将region表的city_id加上外键约束,使用命令:

ALTER TABLE region

ADD CONSTRAINT fk_hui

FOREIGN KEY (city_id)

REFERENCES city(id);

但是报错误:MYSQL ALTER Can't assign foreign key (errno: 150)

导致这一错误的原因我已知的有两个:

1.city_id和city表里的id类型不一致,一个是int,一个是bigint,针对这种情况,只需要将city_id的类型改为bigint:

alter table region change city_id city_id bigint(11) NOT NULL

再添加外键约束就行(这里如果两者都是bigint,即使一个是bigint(12),一个是bigint(11),一样可以添加外键成功,不过尽量让两者完全一致);

2.添加的外键的名字已经存在,如本例中fk_hui,假如在另一张表district里有个city_id也关联了city表的id,并且外键约束的名字也是fk_hui,这时只需要修改一下外键的名字,比如改成fk_huihui即可。

 

© 著作权归作者所有

共有 人打赏支持
liuhuics10
粉丝 4
博文 97
码字总数 39010
作品 0
烟台
私信 提问
MySQL 创建外键时报 105 错误的原因

执行创建外键的语句是: alter table osc_forum_fields add constraint FK_forum_value foreign key (forum) references osc_forums ( id ); 执行错误信息是: [SQL] alter table osc_forum_......

红薯
2010/04/16
1K
0
MySQL外键关联(创世纪新篇)

数据库外键 01.mysql> show create table countryG 02.* 1. row * 03. Table: country 04.Create Table: CREATE TABLE ( 05. smallint(5) unsigned NOT NULL auto_increment, 06. varchar(50......

crossmix
2015/09/25
74
0
MYSQL中ERROR 1005 (HY000): Can't create table 错误

今天创建一个MYSQL数据库时遇到的一个小问题: create table booktype ( btid int(5) unsigned zerofill autoincrement not null primary key, btname varchar(100) not null unique, btnot......

神勇小白鼠
2011/05/26
0
0
错误:mysql foreign key errno 150

Mysql错误:ERROR 1005 (HY000): Can't create table 'mytable.#sql-191_1c5e4' (errno: 150) alter table message_demo add constraint foreign key(type) references message_type(id) on......

cwalet
2011/11/25
0
0
Mysql列的增删改

ALTER TABLE:添加,修改,删除表的列,约束等表的定义。 查看列:desc 表名; 修改表名:alter table t_book rename to bbb; 添加列:alter table 表名 add column 列名 varchar(30); 删除列...

孟飞阳
2016/12/17
10
0

没有更多内容

加载失败,请刷新页面

加载更多

泛型就这么简单

前言 从今天开始进入Java基础的复习,可能一个星期会有一篇的<十道简单算法>,我写博文的未必都是正确的~如果有写错的地方请大家多多包涵并指正~ 今天要复习的是泛型,泛型在Java中也是个很...

群星纪元
25分钟前
2
0
大数据提醒你:中国这些古建筑,可能是下一个巴黎圣母院!

大家晚上好,我是今天的提笔人嗅嗅。 巴黎圣母院失火事件让我的心情很沉重,一句无关痛痒的安慰“巴黎不哭”,已经不能表达我对这场文化之殇的惋惜之痛,人类伟大的建筑在一瞬间被毁灭。 世界...

forespider
36分钟前
0
0
mysql函数substring_index的用法

substring_index 按索引字符位进行截取字符串 substring_index(“待截取的字符串”,“截取数据依据的字符”,截取字符的位置N) 第三个参数可正,可负。正数表示索引字符前面的字符串,负数...

echojson
36分钟前
1
0
好程序员web前端分享用CSS和JS打造一个简单的图片编辑器

好程序员web前端分享用CSS和JS打造一个简单的图片编辑器,本文主要是利用CSS的 filter和简单的Jquery代码来实现一个简单的图片编辑器,包括对图片的透明度,黑白,图片亮度等调节。 CSS filt...

好程序员IT
46分钟前
2
0
浅析spring mvc的细节

spring mvc 整体结构 系统监听到请求 -> 通知tomcat -> 根据web.xml 通知相应的拦截器(spring mvc 通常指DispatcherServlet) --> 检查url是否有相匹配的请求实现 --> 拿到请求实现bean的适配...

最爱肉肉
48分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部