首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >mysql error1025 (HY000):重命名'./foo‘时出错(errorno: 150)是什么意思?

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

Stack Overflow用户
提问于 2008-10-01 23:33:22
回答 11查看 136.1K关注 0票数 163

我在mysql中尝试过:

代码语言:javascript
复制
mysql> alter table region drop column country_id;

结果是这样的:

代码语言:javascript
复制
ERROR 1025 (HY000): Error on rename of './product/#sql-14ae_81' to
'./product/region' (errno: 150)

有什么想法吗?外键的东西?

EN

回答 11

Stack Overflow用户

发布于 2008-10-07 17:24:10

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

代码语言:javascript
复制
shell$ perror 150
MySQL error code 150: Foreign key constraint is incorrectly formed

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

在您的示例中,最有可能的原因是引用了country_id列。

票数 173
EN

Stack Overflow用户

发布于 2009-10-22 16:40:08

尝试删除不存在的外键时也会出现此错误。因此,在删除外键时,一定要确保它们确实存在。

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

代码语言:javascript
复制
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';

//将外键放在这里!

代码语言:javascript
复制
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

这对我来说总是有用的:)

票数 15
EN

Stack Overflow用户

发布于 2013-02-21 16:05:33

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

代码语言:javascript
复制
ALTER TABLE slide_image_sub DROP  KEY  FK_slide_image_sub;

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

希望这能有所帮助。

谢谢

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/160233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档