当我执行以下查询时,它会引发错误,
alter table `ttis`.`users`
add constraint `FK_Role_ID` FOREIGN KEY (`ROLE_ID`) REFERENCES `roles` (`ROLE_ID`)
错误:
Error Code : 1005
Can't create table 'ttis.#sql-9c_8a' (errno: 150)
当我执行以下查询时,它会引发错误,
alter table `ttis`.`users`
add constraint `FK_Role_ID` FOREIGN KEY (`ROLE_ID`) REFERENCES `roles` (`ROLE_ID`)
错误:
Error Code : 1005
Can't create table 'ttis.#sql-9c_8a' (errno: 150)
看看这篇文章:13.6.4.4。FOREIGN KEY 约束并搜索“150”。它在这里说:
如果您重新创建已删除的表,则它必须具有符合引用它的外键约束的定义。如前所述,它必须具有正确的列名和类型,并且必须在引用的键上具有索引。如果这些不满足,MySQL 返回错误号 1005 并在错误消息中引用错误 150。
如果 MySQL 从 CREATE TABLE 语句中报告错误号 1005,并且错误消息引用错误 150,则表创建失败,因为未正确形成外键约束。类似地,如果 ALTER TABLE 失败并且它引用错误 150,这意味着为更改的表将错误地形成外键定义。您可以使用 SHOW ENGINE INNODB STATUS 显示服务器中最近的 InnoDB 外键错误的详细说明。