2013-01-06 83 views
1

這似乎是一個非常普遍的問題,但我似乎無法找到,儘管所有的帖子和pseudotutorials我在最後2天看的答案:/的MySQL創建表失敗,因爲FOREIGNKEY

的項目我目前的工作迫使我學習如何使用MySQL,我似乎遇到了有關ForeignKeys或Indexes的問題。

我有這將創建:
http://paste.ubuntu.com/1503473/

編輯:插入crutial部分在這裏引起上面的鏈接有時可能會死:

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 - 無法創建te table'mangressdb.user_book'(errno:150)

如果你能在這裏幫助我,我會哭泣。這可能只是我的一個非常愚蠢的錯誤,但我找不到它。

回答

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表指定父列名。

+0

是的,這是問題!非常感謝!我重命名了這些列,它工作正常!但是你說了一些關於指定表的內容?你能告訴我該怎麼做嗎? book.bookid沒有看到工作.. –

+0

不,你不需要任何額外的規範,但對列。對不起,如果這不是我的例子清楚。很高興聽到它現在爲你工作! – Perception

+0

天啊!我怎麼可能錯過了!我大概讀了100遍代碼。看來我只是在這裏問問題讓自己難堪^^「但是,非常感謝你! –