MySQL错误代码1005无法创建表(errno150) - (再次) - 在所有外键中

时间:2014-04-22 13:40:23

标签: mysql sql-server database foreign-keys

背景

昨天我正在为练习创建一个小型数据库,并创建了大约9个表,并且只在其中一个表的create table语句中出现了此错误。关于这个的问题位于here。值得庆幸的是,有人通过创建没有foreign key的表来说明另一种方法,然后使用alter table语句添加外键约束,并且它有效。

今天我正在创建另一个数据库,我在包含外键的所有表中收到此错误。我尝试了另一种创建表的方法,然后通过alter table语句添加外键。但它似乎没有帮助。

我的研究:

我知道此问题之前已在本网站上得到解决,但我在thisthis页面上尝试了解决方案,但添加索引除外,因为我首先不需要它们在这么小的数据库(second point in the first answer)中,其次我不了解它们,我想保持简单。这些答案都没有帮助。

此外,正如提到here"如果错误消息引用错误150,则表创建失败,因为未正确形成外键约束。 "

请告诉我外键约束有什么问题。

CREATE TABLE table1 (
    table1_id INT(11) AUTO_INCREMENT,
    name VARCHAR(5000),
    code VARCHAR(5000),
    color VARCHAR(5000),
    PRIMARY KEY (table1_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE table2( -- error code 1005 can t create table errno 150 mysql
    table2_id INT(11) AUTO_INCREMENT,
    date DATE,
    start_time TIME,
    end_time TIME,
    table1_id INT(11) COMMENT 'FK FROM table1',
    PRIMARY KEY (table2_id),
    FOREIGN KEY (table1_id)
        REFERENCES table1(table1_id) 
        ON UPDATE CASCADE ON DELETE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

关于此的任何提示/提示?

0 个答案:

没有答案