无法删除 MariaDB 表中的字段

Posted

技术标签:

【中文标题】无法删除 MariaDB 表中的字段【英文标题】:Not able to drop field in MariaDB table 【发布时间】: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 当字段是键的一部分时 【参考方案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 列,这可能不是您想要的。

【讨论】:

在存在外键时未成功测试您的解决方法***.com/questions/68286706/…

以上是关于无法删除 MariaDB 表中的字段的主要内容,如果未能解决你的问题,请参考以下文章

MariaDB 比较 2 个表并删除不在第一个表中的位置(大数据集)

MariaDB 列存储删除不删除

Oracle 11g 压缩表无法增加删除字段

无法使用 Ruby on rails 删除表中的项目

无法从子查询中的同一表中删除

数据库中的 XAMPP 中的我的 SQL 错误。无法删除表中的用户