Mariadb 无法删除表中的字段

Mariadb 无法删除表中的字段,mariadb,mariadb-10.5,Mariadb,Mariadb 10.5,我有表my_transitions,我正试图删除名为myStage的字段 我正在使用此命令: alter table `my_transitions` drop `myStage` 我看到了这个错误: 表中不存在键列“myStage” 但当我使用此命令列出所有字段时: 描述我的转换 我看得出来 id bigint(20) unsigned NO PRI NULL auto_increment myStage varchar(255) NO MUL NULL updat

我有表
my_transitions
,我正试图删除名为
myStage
的字段

我正在使用此命令:

alter table `my_transitions` drop `myStage`
我看到了这个错误:

表中不存在键列“myStage”

但当我使用此命令列出所有字段时:
描述我的转换

我看得出来

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\u transitions DROP INDEX unique\u stage\u组合


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

我已通过首先删除唯一键解决了此问题
ALTER TABLE my\u transitions DROP INDEX unique\u stage\u组合


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

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

演示:

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

alter table my_transitions drop key unique_stage_combination, drop column mystage;

注意:我在MySQL 8.0上测试了这个,它不需要解决方法。它确实会删除该列,但它只在一列上留下一个唯一的键列
mystage1
,这可能不是您想要的。

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

演示:

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

alter table my_transitions drop key unique_stage_combination, drop column mystage;

注意:我在MySQL 8.0上测试了这个,它不需要解决方法。它确实会删除该列,但只在一列上留下一个唯一的键列
mystage1
,这可能不是您想要的。

这是否回答了您的问题?不,没有。表中确实有该字段:/n当尝试错误地定义外键时,该错误很常见,但在尝试删除列时则不常见。我相信错误来自另一个语句,而不是删除列的alter table。我直接在db中对上面的alter table查询进行了测试,结果就是我已经测试过了,一切看起来都不错。您使用的是哪个版本。我在mariadb 10.2.8中发现了这个问题,请参见:当字段是键的一部分时,这是否回答了您的问题?不,没有。表中确实有该字段:/n当尝试错误地定义外键时,该错误很常见,但在尝试删除列时则不常见。我相信错误来自另一个语句,而不是删除列的alter table。我直接在db中对上面的alter table查询进行了测试,结果就是我已经测试过了,一切看起来都不错。您使用的是哪个版本。我在mariadb 10.2.8中发现了这个问题,请参见:当字段是键的一部分时