【问题标题】:INNODB Cascade Syntax / Logic ProblemINNODB 级联语法/逻辑问题
【发布时间】:2010-10-08 05:08:48
【问题描述】:

我正在创建的 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,如果有帮助,我会尝试输入。

【问题讨论】:

    标签: mysql innodb mysql-error-1005


    【解决方案1】:

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

    试试这个:

    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;
    

    【讨论】:

    • 我实际上已经尝试过在其中添加一个 INDEX 名称行,但没有成功。而且您的建议似乎也没有:(。仍然在第 37 行输出: ERROR 1005 (HY000): Can't create table './school/staff.frm' (errno: 150)
    【解决方案2】:

    您的意思是“角色”列的外键约束使用名称而不是 ID?它看起来像以下行(第 43 行):

    FOREIGN KEY (role) REFERENCES role(name)
    

    应该是:

    FOREIGN KEY (role) REFERENCES role(id)
    

    这执行没有错误。

    或者,“staff.role”列的数据类型(第 40 行,角色 INT NOT NULL)可以更改为 CHAR(30) NOT NULL。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-07
      • 1970-01-01
      • 1970-01-01
      • 2013-07-26
      • 1970-01-01
      • 2020-08-24
      相关资源
      最近更新 更多