MySQL 错误 翻译为:不能添加外键约束 求解啊

(Err)1215-不能添加外键约束这是为什么啊求解啊本人初学... (Err)1215 -不能添加外键约束
这是为什么啊 求解啊 本人初学
展开
 我来答
匿名用户
推荐于2018-03-28
展开全部
数据类型不一致。

你的主表, id 的数据类型是 int unsigned

而你的子表, hoyyb_id 数据类型是 int

因为:
INT[(M)] [UNSIGNED] [ZEROFILL]
普通大小的整数。带符号的范围是-2147483648到2147483647。无符号的范围是0到4294967295。

2种解决办法

1、 主表数据类型, 修改为 int

2、子表数据类型, 修改为 int unsigned

下面是一个模拟的例子:

-- 主表, id 是 INT unsigned
mysql> CREATE TABLE test_main2 (
-> id INT unsigned NOT NULL,
-> value VARCHAR(10),
-> PRIMARY KEY(id)
-> );
Query OK, 0 rows affected (0.01 sec)

-- 子表, 数据类型 int 的时候。
mysql> CREATE TABLE test_sub2 (
-> id INT NOT NULL,
-> main_id INT ,
-> value VARCHAR(10),
-> PRIMARY KEY(id),
-> CONSTRAINT main_id_cons FOREIGN KEY (main_id) REFERENCES test_main2(id)
-> );
ERROR 1005 (HY000): Can't create table 'test.test_sub2' (errno: 150)

-- 子表, 数据类型 int unsigned 的时候

mysql> CREATE TABLE test_sub2 (
-> id INT NOT NULL,
-> main_id INT unsigned,
-> value VARCHAR(10),
-> PRIMARY KEY(id),
-> CONSTRAINT main_id_cons FOREIGN KEY (main_id) REFERENCES test_main2(id)
-> );
Query OK, 0 rows affected (0.02 sec)
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
novice_pegasus
2013-03-17 · TA获得超过624个赞
知道小有建树答主
回答量:722
采纳率:100%
帮助的人:639万
展开全部
你的表是Myisam吧,Myisam可以支持外键?不能吧
追问

 不知道 呃 那我应该怎么改?

你说的是MySQL引擎么 

我改成这样 还是报这个错呃

追答
呃,那我就不清楚了,外键我自己也没有使用过。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式