3 回答

TA貢獻1982條經(jīng)驗 獲得超2個贊
來自FOREIGN KEY約束
如果重新創(chuàng)建已刪除的表,則該表必須具有符合引用該表的外鍵約束的定義。如前所述,它必須具有正確的列名和類型,并且必須在引用的鍵上具有索引。如果不滿足這些條件,MySQL將返回錯誤號1005,并在錯誤消息中引用錯誤150。
我懷疑這是因為您沒有創(chuàng)建foo為InnoDB,因為其他一切看起來都還可以。
編輯:從同一頁面-
兩個表都必須是InnoDB表,并且不能是TEMPORARY表。

TA貢獻1890條經(jīng)驗 獲得超9個贊
您可以使用該命令SHOW ENGINE INNODB STATUS來獲取有關該錯誤的更多特定信息。
它將為您提供Status包含大量文本的列的結(jié)果。
查找名為LATEST FOREIGN KEY ERROR的部分,例如,可能看起來像這樣:
------------------------
LATEST FOREIGN KEY ERROR
------------------------
190215 11:51:26 Error in foreign key constraint of table `mydb1`.`contacts`:
Create table `mydb1`.`contacts` with foreign key constraint failed. You have defined a SET NULL condition but column 'domain_id' is defined as NOT NULL in ' FOREIGN KEY (domain_id) REFERENCES domains (id) ON DELETE SET NULL ON UPDATE CASCADE,
CONSTRAINT contacts_teams_id_fk FOREIGN KEY (team_id) REFERENCES teams (id) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT' near ' ON DELETE SET NULL ON UPDATE CASCADE,
CONSTRAINT contacts_teams_id_fk FOREIGN KEY (team_id) REFERENCES teams (id) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT'.

TA貢獻1874條經(jīng)驗 獲得超12個贊
要創(chuàng)建外鍵,
主列和參考列都必須具有相同的定義。
兩個表引擎必須是InnoDB。
您可以使用此命令更改表的引擎,請在執(zhí)行此命令之前進行備份。
alter table [表名] ENGINE = InnoDB;
添加回答
舉報