为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

叮当猫咪 2019-11-06 10:28:37
我在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)有任何想法吗?外键东西?
查看完整描述

3 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

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


但是棘手的部分是您不能使用列名删除外键,而必须找到用于为其索引的名称。为此,请发出以下选择:


SHOW CREATE TABLE区域;


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


约束外region_ibfk_1键(country_id)参考 country(id)关于删除无作用更新无作用


现在只需发出:


修改表区域丢弃外键 region_ibfk_1;


最后是:


更改表区域放置列country_id;


而且你很好走!


查看完整回答
反对 回复 2019-11-06
?
ibeautiful

TA贡献1993条经验 获得超5个赞

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


shell$ perror 150

MySQL error code 150: Foreign key constraint is incorrectly formed

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


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


查看完整回答
反对 回复 2019-11-06
?
潇湘沐

TA贡献1816条经验 获得超6个赞

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


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


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;

这总是对我有用:)


查看完整回答
反对 回复 2019-11-06
  • 3 回答
  • 0 关注
  • 1430 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信