我有兩個表的問題。數據庫外鍵錯誤
我剛剛創建了一個名爲 「ejemplar」 用下面的SQL代碼表:
CREATE TABLE ejemplar
(
id_revista INT NOT NULL,
id_ejemplar INT NOT NULL,
id_art INT NOT NULL,
fecha_ejem VARCHAR (30),
precio_ejem decimal,
num_pag_ejem INT,
PRIMARY KEY (id_revista,id_ejemplar,id_art),
FOREIGN KEY (id_revista) REFERENCES revista (id_rev)
)
我想創建一個名爲 「ejem_art」 表下面的SQL代碼:
CREATE TABLE ejem_art(
id_rev INT NOT NULL,
id_ejem INT NOT NULL,
id_art INT NOT NULL,
num_pag INT,
PRIMARY KEY (id_rev,id_ejem,id_art),
FOREIGN KEY (id_rev) REFERENCES revista (id_rev),
FOREIGN KEY (id_ejem) REFERENCES ejemplar (id_ejemplar),
FOREIGN KEY (id_art) REFERENCES articulo (id_art)
);
DBMS是MySQL,正如你所看到的,我在兩個表的PK和FK字段中都有相同類型的數據。
當我在創建表「ejemplar」後嘗試運行第二個SQL代碼時,MySQL顯示了着名的errno:150,它涉及到不同類型的數據甚至不同的引擎而不是InnoDB。
我已經確定這兩件事是正確的(相同的數據類型和相同的引擎),但我仍然無法運行第二個代碼。
希望你能幫助我,因爲我不想因爲這個錯誤而創建一個「Alter Table」。
在此先感謝!
你檢查了其他外鍵嗎?要確定問題不是來自另一個關鍵。 – 2014-08-28 22:59:44
如果您重新創建了已刪除的表,它必須具有符合引用它的外鍵約束的定義。如前所述,它必須具有正確的列名和類型,並且必須在引用的鍵上有索引。如果這些不滿足,MySQL將返回錯誤號1005並引用錯誤消息中的錯誤150。我沒有看到引用鍵上的索引。 – bksi 2014-08-28 23:00:23
是的。其他FK很好。問題是隻有這兩個表 – 2014-08-28 23:00:58