MYSQL密钥列不存在

问题描述:

我需要帮助,我的'密钥列'表示它不存在,当它明确。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

您似乎有两个错误,从看起来是复制/粘贴。在您的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)) ; 

FOREIGN KEY子句中的名字列在其上你定义的约束表存在 - 在这种情况下,它必须是在表中CONTRACT列。

在猜测,我想你可能想

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