2017-02-24 166 views
0

無法將外鍵添加到我的表中。錯誤代碼1005 - 無法創建表

CREATE TABLE event (
    id BIGINT(20) NOT NULL AUTO_INCREMENT, 
    issued DATETIME NOT NULL, 
    user VARCHAR(255) NOT NULL, 
    subject VARCHAR(255) NOT NULL, 
    attending BIGINT(255) NOT NULL, 
    attendees VARCHAR(255) NOT NULL, 
    organisers VARCHAR(255) NOT NULL, 
    place BIGINT(20) NOT NULL, 
    started DATETIME NOT NULL, 
    stopped DATETIME NOT NULL, 
    content LONGTEXT NOT NULL, 
    broadcasting TINYINT NOT NULL, 
    PRIMARY KEY (id), 
    FOREIGN KEY (place) 
      REFERENCES place (id), 
    FOREIGN KEY (user) 
      REFERENCES user (username) 
) 

的地方外鍵正在執行正常,但一旦我嘗試添加用戶作爲一個外鍵我不斷收到同樣的錯誤:

Error Code: 1005. Can't create table 'iservices.event' (errno: 150)

誰能幫助?

圖片用戶表: User table

地方臺的圖片: Place table

反正是有擴大的MySQL Workbench中的錯誤?

+0

爲什麼用戶是varchar? – Sepultura

+0

它指的是一個用戶名。 – Ellen

+0

顯示兩張參考表 – Mihai

回答

0

外鍵必須爲unique,因此請使用戶名唯一(這可能不是最好的主意)或選擇與用戶標識不同的內容。

我的建議:向用戶表中添加一個主自動增量鍵並將其用作外鍵。

+0

正如您從我添加的圖片中看到的那樣,它是唯一的。它是用戶表中的PK。 – Ellen

+0

用戶表在開始工作之前已經是應用程序的一部分,無法編輯。 – Ellen

+0

好吧,那麼它已經是唯一的 – Sepultura

0
  1. 引用列必須是唯一的。你的情況沒問題。
  2. 子表和父表中的列必須是相同類型的列。在你的情況下,他們是不同的。
+0

我不知道我是否在這裏失去了一些東西。你在哪裏可以看到類型不同? – Ellen

+0

對不起,我的錯。 – Devart

+0

另一個問題。這些表中是否有數據? – Devart

0

能否請您確保userplace表存在並具有相應的設置爲primary key列?下面剪斷正常工作:

CREATE TABLE user(username VARCHAR(255) PRIMARY KEY); 
CREATE TABLE place(id BIGINT(20) PRIMARY KEY); 

CREATE TABLE event (
    id BIGINT(20) NOT NULL AUTO_INCREMENT, 
    issued DATETIME NOT NULL, 
    user VARCHAR(255) NOT NULL, 
    subject VARCHAR(255) NOT NULL, 
    attending BIGINT(255) NOT NULL, 
    attendees VARCHAR(255) NOT NULL, 
    organisers VARCHAR(255) NOT NULL, 
    place BIGINT(20) NOT NULL, 
    started DATETIME NOT NULL, 
    stopped DATETIME NOT NULL, 
    content LONGTEXT NOT NULL, 
    broadcasting TINYINT NOT NULL, 
    PRIMARY KEY (id), 
    FOREIGN KEY (place) 
      REFERENCES place (id), 
    FOREIGN KEY (user) 
      REFERENCES user (username) 
) 

這裏的SQL Fiddle

+0

它們都被創建。我有添加到我的問題的照片證實了這一點。 – Ellen

相關問題