代码之家  ›  专栏  ›  技术社区  ›  user2924127

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

  •  1
  • user2924127  · 技术社区  · 6 年前

    我有一张像这样的桌子:

    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
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Bill Karwin    6 年前

    您需要通过一个外键的约束名而不是它定义的列的名称来除去它。

    不好:

    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)