3 回答

TA貢獻(xiàn)1982條經(jīng)驗(yàn) 獲得超2個(gè)贊
來自FOREIGN KEY約束
如果重新創(chuàng)建已刪除的表,則該表必須具有符合引用該表的外鍵約束的定義。如前所述,它必須具有正確的列名和類型,并且必須在引用的鍵上具有索引。如果不滿足這些條件,MySQL將返回錯(cuò)誤號(hào)1005,并在錯(cuò)誤消息中引用錯(cuò)誤150。
我懷疑這是因?yàn)槟鷽]有創(chuàng)建foo為InnoDB,因?yàn)槠渌磺锌雌饋矶歼€可以。
編輯:從同一頁(yè)面-
兩個(gè)表都必須是InnoDB表,并且不能是TEMPORARY表。

TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個(gè)贊
您可以使用該命令SHOW ENGINE INNODB STATUS來獲取有關(guān)該錯(cuò)誤的更多特定信息。
它將為您提供Status包含大量文本的列的結(jié)果。
查找名為L(zhǎng)ATEST 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貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個(gè)贊
要?jiǎng)?chuàng)建外鍵,
主列和參考列都必須具有相同的定義。
兩個(gè)表引擎必須是InnoDB。
您可以使用此命令更改表的引擎,請(qǐng)?jiān)趫?zhí)行此命令之前進(jìn)行備份。
alter table [表名] ENGINE = InnoDB;
添加回答
舉報(bào)