我正在尝试分配外键。
我有'用户'表:
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)
我错过了什么?
答案 0 :(得分:0)
找到它。
问题是两个user_id列不是同一类型,在用户中它是“mediumint unsigned”,而在项目中它只是“mediumint”,而不是完全确定什么是“unsignued”意味着我没有拿起对此。
解决方案是改变它们:
ALTER TABLE projects
MODIFY COULMN user_id MEDIUMINT UNSIGNED;
然后我从上面运行我的命令,一切正常。