2016-01-27 43 views
0

我需要幫助,我的'密鑰列'表示它不存在,當它明確。MYSQL密鑰列不存在

CREATE TABLE PUBLISHER ( 
LISHER_ID INT PRIMARYKEY, 
LISHER_NAME VARCHAR(5NNULL, 
LISHER_ADDRESS VARCHAR(NOT NULL, 
LISHER_PHONE VARCHAR(5) NULL, 
LISHER_EMAIL VARCHAR(4) NULL); 
+1

請不要修改你的問題弄成這個樣子,因爲沒有人可以使用這個了。如果您認爲這對任何可以刪除它的人都沒有幫助。 –

+1

我投票結束這個問題作爲題外話,因爲原來的問題已被刪除,取而代之的是「謝謝」。 – Prune

回答

0

您似乎有兩個錯誤,從看起來是複製/粘貼。在您的CONTRACT表中,您命名了PUBLICATION_PUB_ID列,但在您的索引定義和您的外鍵約束中,您試圖將其作爲PUB_ID引用。

mysql> CREATE TABLE CONTRACT (
      -> CON_NUMBER INT NOT NULL PRIMARY KEY, 
      -> CON_STARTDATE DATETIME NOT NULL, 
      -> CON_ENDDATE DATETIME NOT NULL, 
      -> PUBLICATION_PUB_ID INT NOT NULL, 
      -> INDEX PUBLICATION (PUBLICATION_PUB_ID), 
      -> CONSTRAINT FK_CONTRACT_PUBLICATION FOREIGN KEY (PUBLICATION_PUB_ID) REFERENCES PUBLICATION (PUB_ID)) ; 
2

FOREIGN KEY子句中的名字列在其上你定義的約束表存在 - 在這種情況下,它必須是在表中CONTRACT列。

在猜測,我想你可能想

CREATE TABLE CONTRACT (
    ... 
    CONSTRAINT FK_CONTRACT_PUBLICATION FOREIGN KEY (PUBLICATION_PUB_ID) 
    REFERENCES PUBLICATION (PUB_ID));