【问题标题】:Not able to drop field in MariaDB table无法删除 MariaDB 表中的字段
【发布时间】:2021-04-04 23:41:39
【问题描述】:

我有表 my_transitions,我正在尝试删除名为 myStage 的字段。

我正在使用这个命令:

alter table `my_transitions` drop `myStage`

我看到了这个错误:

Key column 'myStage' doesn't exist in table

但是当我使用此命令列出所有字段时: describe my_transitions

我可以看到

id  bigint(20) unsigned NO  PRI NULL    auto_increment
myStage varchar(255)    NO  MUL NULL    
updated_at  timestamp   YES     NULL    

任何人都可以看到我是否做错了什么?

编辑:

如果我运行show create table my_transitions;,我会得到:

CREATE TABLE `my_transitions` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `myStage` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `myStage1` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `unique_stage_combination` (`myStage`,`myStage1`),
  KEY `my_transitions_myStage` (`myStage`),
  KEY `my_transitions_myStage1` (`myStage1`)
) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci

【问题讨论】:

  • 这能回答你的问题吗? Key column doesn't exist in table
  • 不,它没有。我确实在表中有该字段:/
  • 该错误在尝试错误定义外键时很常见,但在尝试删除列时则不然。我相信错误来自另一个语句,而不是您删除该列的更改表。
  • 我直接在 db 中对上述 alter table 查询进行了测试,它来自那里
  • 我已经测试过,一切看起来都不错。您使用的是哪个版本。我在 mariadb 10.2.8 中发现了这个问题,请参阅:jira.mariadb.org/browse/MDEV-13613 当字段是键的一部分时

标签: mariadb mariadb-10.5


【解决方案1】:

我已经通过首先删除唯一键来解决它 ALTER TABLE my_transitions DROP INDEX unique_stage_combination;

如果列是 Maria DB 10.5.8 中索引键的一部分,则似乎无法删除该列。

【讨论】:

    【解决方案2】:

    这是 MariaDB 中的一个特殊错误。它会影响 MariaDB 10.5。

    演示:https://dbfiddle.uk/?rdbms=mariadb_10.5&fiddle=867204670347fa29e40bd5eb510c6956

    解决方法是先删除列 mystage 所属的唯一键,然后删除该列。

    alter table my_transitions drop key unique_stage_combination, drop column mystage;
    

    P.S.:我在 MySQL 8.0 上对此进行了测试,它不需要解决方法。它确实删除了该列,但它只在一个列 mystage1 上留下了一个 UNIQUE KEY 列,这可能不是您想要的。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-23
    • 1970-01-01
    • 2011-09-19
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多