0

我正在尝试分配一个外键。

我有一个“用户”表:

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

等等。我有一个“项目”表:

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;

返回错误信息:

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

我错过了什么?

4

1 回答 1

0

找到了。

问题是两个 user_id 列的类型不同,在用户中它是“mediumint unsigned”,而在项目中它只是“mediumint”,不完全确定“unsignued”是什么意思我没有接受这个。

解决方案是更改它们:

ALTER TABLE projects
MODIFY COULMN user_id MEDIUMINT UNSIGNED;

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

于 2013-05-09T22:16:59.020 回答