INNODB级联语法/逻辑问题

时间:2009-02-17 21:41:14

标签: mysql innodb mysql-error-1005

我正在创建一个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

2 个答案:

答案 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。