我正在创建一个SQL数据库的问题。我正在尝试将其切换为使用INNODB,但我似乎无法使级联的语法(或可能是逻辑)正确。
这是一个part of the code erroring。它不喜欢第40行。
错误输出在通常的神秘(至少对我来说)形式:
ERROR 1005 (HY000) at line 36: Can't create table './school/staff.frm' (errno: 150)
编辑:
如果有帮助的话,我试图输入whole SQL file。
答案 0 :(得分:0)
外键必须是索引。 (的 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;
答案 1 :(得分:0)
你是说“角色”列的外键约束是使用名称而不是ID吗?它看起来像以下一行(第43行):
FOREIGN KEY (role) REFERENCES role(name)
应该是:
FOREIGN KEY (role) REFERENCES role(id)
执行时没有错误。
或者,“staff.role”列的数据类型(第40行,角色INT NOT NULL)可以更改为CHAR(30)NOT NULL。