-1

我正在创建的 SQL 数据库有问题。我正在尝试将其切换为使用 INNODB,但我似乎无法获得正确的级联语法(或可能的逻辑)。

这是代码错误的一部分。它不喜欢第 40 行。

以通常的神秘(至少对我而言)形式的错误输出:

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

编辑:

如果有帮助,这是我尝试输入的整个 SQL 文件。

4

2 回答 2

0

外键必须是索引。(角色名称

试试这个:

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;
于 2009-02-17T22:04:05.233 回答
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。

于 2009-02-18T00:01:05.233 回答