我正在创建的 SQL 数据库有问题。我正在尝试将其切换为使用 INNODB,但我似乎无法获得正确的级联语法(或可能的逻辑)。
这是代码错误的一部分。它不喜欢第 40 行。
以通常的神秘(至少对我而言)形式的错误输出:
ERROR 1005 (HY000) at line 36: Can't create table './school/staff.frm' (errno: 150)
编辑:
如果有帮助,这是我尝试输入的整个 SQL 文件。
我正在创建的 SQL 数据库有问题。我正在尝试将其切换为使用 INNODB,但我似乎无法获得正确的级联语法(或可能的逻辑)。
这是代码错误的一部分。它不喜欢第 40 行。
以通常的神秘(至少对我而言)形式的错误输出:
ERROR 1005 (HY000) at line 36: Can't create table './school/staff.frm' (errno: 150)
编辑:
如果有帮助,这是我尝试输入的整个 SQL 文件。
外键必须是索引。(角色名称)
试试这个:
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。