mysql错误1025(HY000):" ./ foo"重命名错误(错误编号:150)是什么意思?

时间:2020-03-06 15:00:12  来源:igfitidea点击:

我在mysql中尝试过:

mysql> alter table region drop column country_id;

并得到了:

ERROR 1025 (HY000): Error on rename of './product/#sql-14ae_81' to
'./product/region' (errno: 150)

有任何想法吗?外键东西?

解决方案

我猜外键约束问题。 country_id是否在另一个表中用作外键?

我不是数据库专家,但我认为我通过删除fk,执行了alter table的工作然后重做fk的工作来解决了这样的问题(存在fk约束)。

我会很感兴趣地听到结果是什么,有时mysql还是很神秘的。

这确实是一个外键错误,我们可以使用perror查明:

shell$ perror 150
MySQL error code 150: Foreign key constraint is incorrectly formed

要查找有关失败原因的更多详细信息,可以使用" SHOW ENGINE INNODB STATUS"并查找"最新外键错误"部分,其中包含有关错误原因的详细信息。

在情况下,很可能是因为某些内容引用了country_id列。

我们还可能由于尝试删除不存在的外键而收到此错误。因此,在删除外键时,请始终确保它们确实存在。

如果外键确实存在,并且仍然出现此错误,请尝试以下操作:

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';

//将外键放在这里!

SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

这总是对我有用:)

查看mysql数据库的错误文件。根据错误#26305,我的sql没有给我们原因。自MySQL 4.1开始存在此错误;-)