【问题标题】:Mysql error no 105 , when creating a foriegn key constraintMysql error no 105,创建外键约束时
【发布时间】:2016-09-27 05:59:53
【问题描述】:

我有两个表: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

但它给了我以下错误

查询:Alter table hr_001.sys_users 添加约束 constraint_user_role 外键 (Role) 引用 hr_001.sys_roles(ID...

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;

有人可以帮忙吗?

【问题讨论】:

  • 请张贴这两张表的create table code
  • 但我认为这是你应该首先看的stackoverflow.com/questions/1233032/…
  • @1000111 create statements 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 CREATE TABLE sys_users (ID int(10) unsigned NOT NULL AUTO_INCREMENT, Username varchar(100) NOT NULL, Password varchar(100) NOT NULL, Activetinyint (1) NOT NULL DEFAULT '1', Role int(11) NOT NULL, PRIMARY KEY (ID) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8
  • @1000111 看看我编辑的问题,谢谢

标签: mysql foreign-keys


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    很抱歉,我忘记更改 sys_usersRole 列为 unsigned ,因为 sys_roles id 列被标记为 unsigned,谢谢大家的快速回复。

    【讨论】:

    • 是的,这就是原因。你也可以看看这个post 来收集一些已知的外键错误案例的知识
    猜你喜欢
    • 2014-10-20
    • 2018-05-01
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    • 1970-01-01
    • 2018-04-25
    • 1970-01-01
    相关资源
    最近更新 更多