创建foriegn键约束时,Mysql错误没有105

时间:2016-05-29 09:16:44

标签: mysql foreign-keys

我有两张桌子:sys_userssys_roles

创建两个表后,我尝试使用以下语句创建外键:

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

但它给了我以下错误

  

查询:更改表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;

有人可以为此提供帮助吗?

2 个答案:

答案 0 :(得分:1)

如果您的引用已创建,请尝试使用ON DELETE SET NULL而不是ON DELETE CASCADE更改外键创建语法,然后查看此question并检查您的表格。

答案 1 :(得分:0)

抱歉,我忘记更改 sys_users 角色  列未签名,因为 sys_roles ID 列标记为未签名,感谢大家快速回复。