首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法删除外键

问无法删除外键
EN

Stack Overflow用户
提问于 2012-05-17 16:57:40
回答 5查看 28.7K关注 0票数 26

我想删除表中的外键,但已进入此错误消息

代码语言:javascript
复制
mysql> alter table customers drop foreign key customerid;
ERROR 1025 (HY000): Error on rename of '.\products\customers' to '.\products\#sql2-7ec-a3' (errno: 152)
mysql>
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-05-17 17:34:37

若要避免在尝试删除外键时出现此错误,请使用约束名称,而不是外键的列名。

当我试着

代码语言:javascript
复制
mysql> ALTER TABLE mytable DROP PRIMARY KEY;

我收到了错误,因为

代码语言:javascript
复制
ERROR 1025 (HY000): Error on rename of '.\database\#sql-454_3' to '.\database\mytable' (errno: 150).

我用以下命令解决了这个问题:

代码语言:javascript
复制
mysql> ALTER TABLE mytable DROP PRIMARY KEY, ADD PRIMARY KEY (column1,column2,column3);

一些对你有帮助的链接。

link 1

link 2 look由Alex Blume于2008年11月7日下午5:09发布,由Hector Delgadillo于2011年1月21日发布,凌晨4:57

票数 6
EN

Stack Overflow用户

发布于 2014-02-05 05:18:46

here by Chris White描述的解决方案对我很有效。

根本问题是MySQL同时创建了索引和外键。两者都必须删除(外键首先与Chris所说的相反)。

表显示create

  1. table_name;

SHOW CREATE TABLE table\_name:| table_name | CREATE TABLE table\_name ( id int(20) unsigned NOT NULL auto_increment,key\_column smallint(5) unsigned default '1',key column\_tablein\_26440ee6 (key\_column),<-显示键名称约束table\_name\_ibfk\_1外键(key\_column)引用<-显示外键约束名称second\_table (id) ON DELETE SET NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

  • 删除外键约束:

ALTER TABLE table_name DROP FOREIGN KEY table\_name\_ibfk\_1;

  • Delete键

ALTER TABLE table_name DROP KEY column\_tablein\_26440ee6;

这对我来说就够了。

票数 34
EN

Stack Overflow用户

发布于 2012-05-17 17:04:33

它看起来像是MySQL的错误消息中的一个错误。(http://bugs.mysql.com/bug.php?id=10333)

使用SHOW CREATE TABLE table_name查看外键的实际名称。在生成外键名称拼写错误的查询时,看起来可能是mysql查询浏览器的问题。

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

https://stackoverflow.com/questions/10632587

复制
相关文章

相似问题

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