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中发现了这个问题,请参见:当字段是键的一部分时