错误代码1005,SQL状态HY000:无法创建表错误号:150

时间:2011-11-09 19:19:34

标签: mysql database mysql-error-1005

我正在尝试创建一个表,但是一旦我的netbeans错误第一个DB表,脚本就会失败。

如何解决这个问题?

CREATE TABLE filmy
(
    Film_Id int NOT NULL,
    Nazwa varchar(250),
    Adres varchar(250),
    Data_Utworzenia date,
    Komentarz varchar(250),
    Gat_Id int,
    Sub_Id int,
    Aut_Id int,
    User_Id int,

    Primary Key (Film_Id),
    CONSTRAINT fk_GatFilmy FOREIGN KEY (Gat_Id) REFERENCES gatunek(Gat_Id),
    CONSTRAINT fk_SubFilmy FOREIGN KEY (Sub_Id) REFERENCES subgatunek(Sub_Id),
    CONSTRAINT fk_AutFilmy FOREIGN KEY (Aut_Id) REFERENCES autor(Aut_Id),
    CONSTRAINT fk_UserFilmy FOREIGN KEY (User_Id) REFERENCES users(User_Id)
)

5 个答案:

答案 0 :(得分:10)

使用show innodb status - 埋在输出中(中间)是“最后一个外键错误”部分。它将解释为什么表创建失败。

通常是由于参考FK字段不存在(拼写错误,错误的表格),或者存在字段类型不匹配。 FK链接的字段必须与定义完全匹配。 char(1)字段不能FK到char(5)字段等...

注意:在MySQL 5.5中,命令为show engine innodb status(感谢kewpiedoll99)

答案 1 :(得分:1)

这是我的解决方案:

CREATE TABLE filmy 
( 
    Film_Id           int           NOT NULL, 
    Nazwa             varchar(250)      NULL, 
    Adres             varchar(250)      NULL, 
    Data_Utworzenia   date              DEFAULT '0000-00-00', 
    Komentarz         varchar(250)      NULL, 
    Gat_Id            int               NULL, 
    Sub_Id            int               NULL, 
    Aut_Id            int               NULL, 
    User_Id           int               NULL, 
 Primary Key (Film_Id, Gat_Id, Sub_Id, Aut_Id, User_Id )
) ENGINE=INNODB;

在创建gat,sub,aut和amp;之后完成外键约束。用户或者ide不知道有两个表存在以使表约束成为现实! 尝试:alter table filmy add constraint gatfilmy foreign key(gat_id)引用gat(gat_id)on update restrict on delete restrict 你必须保持一致;无论是表格gat还是gatunek,它都不能同时存在。如果你没有定义它们,cpu将如何知道哪个是gat或gatunek? 现在尝试使用其余的约束并记住你要创建所有表,然后才能改变它们!

CONSTRAINT fk_GatFilmy FOREIGN KEY (Gat_Id) REFERENCES gatunek(Gat_Id), 
CONSTRAINT fk_SubFilmy FOREIGN KEY (Sub_Id) REFERENCES subgatunek(Sub_Id), 
CONSTRAINT fk_AutFilmy FOREIGN KEY (Aut_Id) REFERENCES autor(Aut_Id), 
CONSTRAINT fk_UserFilmy FOREIGN KEY (User_Id) REFERENCES users(User_Id) 

答案 2 :(得分:0)

代码150是外键错误。

其中一个引用的表或列不存在(但可能在您的脚本中稍后)或与类型/长度/整理/字符集不匹配。依次评论它们,看看哪一个。

或者在所有CREATE运行后运行单独的ALTER TABLE命令

答案 3 :(得分:0)

当我尝试为没有索引的列添加外键时,我通常会收到该错误;我注意到所显示的SQL中没有任何关联列。

答案 4 :(得分:0)

你可以使用这个表名(filmy)与其他表的关系,然后你删除它。检查任何关系,并删除您使用此表名称的每个位置或更改您的表名称,例如使用“filmy1” 我更改了我的表名,然后就可以了。

我希望这项工作。