由于foreignkey,MySQL创建表失败

时间:2013-01-06 15:45:32

标签: mysql indexing foreign-keys

这似乎是一个非常常见的问题,但我似乎无法找到答案,尽管我在过去2天内阅读过所有帖子和假教程:/

我目前正在开展的项目迫使我学习如何使用MySQL,而且我似乎遇到了有关ForeignKeys或Indexes的问题。

  
    

我有这些创造:
     http://paste.ubuntu.com/1503473/

  

编辑:在此处插入重要部分导致上述链接可能会在某个时间死亡:

   CREATE TABLE user_book (
        userid  Varbinary(16),
        bookid Varbinary(16),

        PRIMARY KEY(userid, bookid),

        INDEX(userid),
        FOREIGN KEY(userid)  REFERENCES user,

        INDEX (bookid),
        FOREIGN KEY(bookid) REFERENCES book

    )ENGINE=INNODB;

    Made the same mistake at user_chapter.

但是sql在表“user_book”处抛出错误:
 #1005 - 无法创建表'mangressdb.user_book'(错误号:150)

如果你可以帮助我,因为我快要哭了,真的很棒。这可能只是我的一个非常愚蠢的错误,但我找不到它。

1 个答案:

答案 0 :(得分:2)

您的DDL中看起来有名称冲突。尝试显式指定要用于外键的父表列:

CREATE TABLE user_book (
    userid  Varbinary(16),
    bookid Varbinary(16),

    PRIMARY KEY(userid, bookid),

    INDEX(userid),
    FOREIGN KEY(userid)  REFERENCES user (userid),

    INDEX (bookid),
    FOREIGN KEY(bookid) REFERENCES book (bookid)

)ENGINE=INNODB;

您还需要明确指定user_chapter表的父列名称。