即使存在也无法删除密钥:错误代码:1091

本教程将介绍即使存在也无法删除密钥:错误代码:1091的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

即使存在也无法删除密钥:错误代码:1091 教程 第1张

问题描述

我有一个如下所示的表格:

CREATE TABLE `articles` 
 ( 
  `article_id` INT(10) NOT NULL auto_increment, 
  `pubsrc_id`  INT(10) NOT NULL, 
  `pub_id`  VARCHAR(16) NOT NULL
  PRIMARY KEY (`article_id`), 
  UNIQUE KEY `pubsrc_id` (`pubsrc_id`,`pub_id`), 
  CONSTRAINT `pub_articles_ibfk_1` FOREIGN KEY (`pubsrc_id`) REFERENCES `pub_sources` (`pubsrc_id`) ON
 DELETE RESTRICT 
 ON 
 UPDATE RESTRICT, 
  CONSTRAINT `pub_articles_ibfk_2` FOREIGN KEY (`pubsrc_id`) REFERENCES `pub_sources` (`pubsrc_id`)
 ) 

还有另一个表,前一个表有一个键:

CREATE TABLE `pub_sources` 
( 
 `pubsrc_id`  INT(11) NOT NULL, 
 `pubsrc_name`VARCHAR(32) NOT NULL
 PRIMARY KEY (`pubsrc_id`) 
) 

我正在尝试使用以下命令删除外键:

SET SESSION SQL_SAFE_UPDATES = 0;
SET FOREIGN_KEY_CHECKS = 0;
ALTER TABLE `articles` DROP FOREIGN KEY `pubsrc_id`;

但得到以下错误:

Error Code: 1091. Can't DROP 'pubsrc_id'; check that column/key exists

推荐答案

你需要删除一个外键的约束名,而不是它所定义的列名.

不好:

mysql> ALTER TABLE `articles` DROP FOREIGN KEY `pubsrc_id`;
ERROR 1091 (42000): Can't DROP 'pubsrc_id'; check that column/key exists

好的:

mysql> ALTER TABLE `articles` DROP FOREIGN KEY `pub_articles_ibfk_1`;
Query OK, 0 rows affected (0.03 sec)

好了关于即使存在也无法删除密钥:错误代码:1091的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。