当前位置:  开发笔记 > 后端 > 正文

什么是mysql错误1025(HY000):重命名'./foo'时出错(errorno:150)是什么意思?

如何解决《什么是mysql错误1025(HY000):重命名'./foo'时出错(errorno:150)是什么意思?》经验,为你挑选了4个好方法。

我在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)

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



1> Jeshurun..:

如果您的表使用InnoDB引擎,通常会出现此错误.在这种情况下,您必须删除外键,然后执行alter table并删除列.

但棘手的部分是你不能使用列名删除外键,而是你必须找到用于索引它的名称.要找到它,请发出以下选择:

SHOW CREATE TABLE区域;

这应该显示索引的名称,如下所示:

CONSTRAINT region_ibfk_1FOREIGN KEY(country_id)REFERENCES country(id)在更新时不执行任何操作

现在只需发出:

alter table region drop foreign key region_ibfk_1;

最后一个:

alter table region drop column country_id;

你很高兴去!



2> 小智..:

这确实是一个外键错误,你可以找出使用perror:

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

要查找有关失败的更多详细信息,您可以使用SHOW ENGINE INNODB STATUS并查找最新的FOREIGN KEY ERROR部分,其中包含有关错误的详细信息.

在您的情况下,很可能导致某些内容引用country_id列.


再次,另一个误导性MySQL显示错误...谢谢.

3> 小智..:

尝试删除不存在的外键时,也会出现此错误.因此,在删除外键时,请务必确保它们确实存在.

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

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;

这总是对我有把戏:)



4> 小智..:

只需在drop语句中使用'KEY'而不是'FOREIGN KEY'运行alter table查询.我希望它有助于解决问题,并将删除外键约束,您可以更改表列并删除表.

ALTER TABLE slide_image_sub DROP  KEY  FK_slide_image_sub;

在这里DROP KEY,而不是DROP FOREIGN KEY,

希望它会有所帮助.

谢谢

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有