2016-05-29 48 views
1

时,我有两个表:sys_userssys_rolesMySQL错误没有105,创造了foriegn键约束

创建两个表后,我试着用下面的语句创建外键:

Alter table `hr_001`.`sys_users` 
add constraint 
`constraint_user_role` foreign key (`Role`) references 
`hr_001`.`sys_roles`(`ID`) on delete Set null 

但它给我下面的错误

查询:ALTER TABLE hr_001sys_users添加约束 constraint_user_role外键(Role)引用 hr_001sys_rolesID ...

Error Code: 1005 
Can't create table 'hr_001.#sql-2e5c_1f' (errno: 150) 

我的表创建语句是

CREATE TABLE `sys_users` (
    `ID` INT (10) UNSIGNED NOT NULL AUTO_INCREMENT, 
    `Username` VARCHAR (100) NOT NULL, 
    `Password` VARCHAR (100) NOT NULL, 
    `Active` TINYINT (1) NOT NULL DEFAULT '1', 
    `Role` INT (11) NOT NULL, 
    PRIMARY KEY (`ID`) 
) ENGINE = INNODB AUTO_INCREMENT = 2 DEFAULT CHARSET = utf8; 

CREATE TABLE `sys_roles` (
    `ID` INT (10) UNSIGNED NOT NULL AUTO_INCREMENT, 
    `Role` VARCHAR (50) NOT NULL, 
    PRIMARY KEY (`ID`) 
) ENGINE = INNODB AUTO_INCREMENT = 2 DEFAULT CHARSET = utf8; 

任何人都可以在这方面的帮助?

+0

请发表这两个表的'create table code'。 – 1000111

+0

http://stackoverflow.com/questions/825362/mysql-error-150-foreign-keys –

+0

但我认为这是你应该寻找什么第一http://stackoverflow.com/questions/1233032/mysql-error-150 -cannot创建表 –

回答

1

试着改变使用不ON DELETE SET NULLON DELETE CASCADE您创建外键语法如果你的参考被创建,那么看看这个question并检查你的表格。

+0

不工作.... – Roshan

0

对不起,我忘了改变sys_users角色无符号,becouse sys_rolesID列标记为无符号,谢谢你们的快速回复。

+0

是的,这就是原因。你也可以看看这个[** post **](http://stackoverflow.com/questions/9018584/error-code-1005-cant-create-table-errno-150)收集一些已知案例的知识外键错误 – 1000111

+0

@ 1000111是的,谢谢1000111 – Roshan