Не могу сбросить ключ, даже если он существует: Код ошибки: 1091 - PullRequest
0 голосов
/ 09 января 2019

У меня есть таблица, которая выглядит так:

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`) 
         ) 

Я пытаюсь сбросить клавишу foregin с помощью команды:

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

1 Ответ

0 голосов
/ 09 января 2019

Вам нужно удалить внешний ключ по имени ограничения, а не по имени столбца, в котором он определен.

Не в порядке:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...