我有我创建一个SQL数据库的问题。我试图将其切换到使用InnoDB,但我似乎无法得到语法(或可能的逻辑)正确的级联。

下面是代码示数的一部分。它不象线40。

在通常的隐蔽(至少对我来说)形式错误输出:

ERROR 1005 (HY000) at line 36: Can't create table './school/staff.frm' (errno: 150)

编辑:

这里的 我想管中是否有帮助整个SQL文件。

有帮助吗?

解决方案

外键必须是索引。 (的 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。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top