MYSQL ALTER无法分配外键(错误号:150)

时间:2013-05-09 19:08:19

标签: mysql foreign-keys alter

我正在尝试分配外键。

我有'用户'表:

user_id        mediumint(8) unsigned, NotNull, Primary Key, AutoIncrement,
first_name     varchar(20)          , NotNull
last_name      varchar(40)          , NotNull

和cetera。我有一个'项目'表:

project_id          int(10) unsigned, NotNull, Primary Key, AutoIncrement,
project_name        varchar(20)     , NotNull
user_id             mediumint(8)    , NotNull

我刚刚学会了外键,听起来很棒,但我无法让它们工作......

ALTER TABLE projects 
ADD CONSTRAINT FK_projects 
FOREIGN KEY (user_id) 
REFERENCES users(user_id) 
ON UPDATE CASCADE 
ON DELETE CASCADE;

返回错误消息:

ERROR 1005(HY000):无法创建表'thermal。#sql-62d9_4'(错误号:150)

我错过了什么?

1 个答案:

答案 0 :(得分:0)

找到它。

问题是两个user_id列不是同一类型,在用户中它是“mediumint unsigned”,而在项目中它只是“mediumint”,而不是完全确定什么是“unsignued”意味着我没有拿起对此。

解决方案是改变它们:

ALTER TABLE projects
MODIFY COULMN user_id MEDIUMINT UNSIGNED;

然后我从上面运行我的命令,一切正常。