背景
昨天我正在为练习创建一个小型数据库,并创建了大约9个表,并且只在其中一个表的create table
语句中出现了此错误。关于这个的问题位于here。值得庆幸的是,有人通过创建没有foreign key
的表来说明另一种方法,然后使用alter table
语句添加外键约束,并且它有效。
今天我正在创建另一个数据库,我在包含外键的所有表中收到此错误。我尝试了另一种创建表的方法,然后通过alter table
语句添加外键。但它似乎没有帮助。
我的研究:
我知道此问题之前已在本网站上得到解决,但我在this,this页面上尝试了解决方案,但添加索引除外,因为我首先不需要它们在这么小的数据库(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;
关于此的任何提示/提示?