无法删除 MariaDB 表中的字段

问题描述

我有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

解决方法

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

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

,

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

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

解决方法是先删除列 mystage 所属的 UNIQUE KEY,然后删除该列。

alter table my_transitions drop key unique_stage_combination,drop column mystage;

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...