2013-05-09 66 views
0

我想分配一個外鍵。MYSQL ALTER不能分配外鍵(errno:150)

我有一個 '用戶' 表:

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; 

返回錯誤信息:

ERROR 1005(HY000):無法創建表(錯誤:150) '熱#SQL-62d9_4。'

我缺少什麼?

回答

0

找到它。

問題是,兩個user_id列不是相同的類型,在用戶中它是「mediumint unsigned」,而在項目中它只是「mediumint」,並不完全確定「unsignued」是什麼意思,我沒有選擇在這上面。

解決的辦法是改變他們:

ALTER TABLE projects 
MODIFY COULMN user_id MEDIUMINT UNSIGNED; 

然後我從上面跑我的命令,和一切工作。