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);
答
您似乎有两个错误,从看起来是复制/粘贴。在您的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));
请不要修改你的问题弄成这个样子,因为没有人可以使用这个了。如果您认为这对任何可以删除它的人都没有帮助。 –
我投票结束这个问题作为题外话,因为原来的问题已被删除,取而代之的是“谢谢”。 – Prune