这似乎是一个非常常见的问题,但我似乎无法找到答案,尽管我在过去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)
如果你可以帮助我,因为我快要哭了,真的很棒。这可能只是我的一个非常愚蠢的错误,但我找不到它。
答案 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
表的父列名称。