INNODB级联语法/逻辑问题
-
05-09-2019 - |
题
我有我创建一个SQL数据库的问题。我试图将其切换到使用InnoDB,但我似乎无法得到语法(或可能的逻辑)正确的级联。
下面是代码示数的一部分。它不象线40。
在通常的隐蔽(至少对我来说)形式错误输出:
ERROR 1005 (HY000) at line 36: Can't create table './school/staff.frm' (errno: 150)
编辑:
解决方案
外键必须是索引。 (的 role.name 强>)
尝试这种情况:
CREATE TABLE IF NOT EXISTS `role` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` char(30) NOT NULL,
`description` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `name` (`name`)
) ENGINE=InnoDB;
其他提示
您是不是要找的“角色”列的外键约束使用的名称,而不是ID是什么?它看起来像下面的行(行43):
FOREIGN KEY (role) REFERENCES role(name)
应该是:
FOREIGN KEY (role) REFERENCES role(id)
此执行没有错误。
可替换地, “staff.role” 列的数据类型(第40行,角色INT NOT NULL)可以更改为CHAR(30)NOT NULL。
不隶属于 StackOverflow