尝试从表中删除 X 时,表中不存在键列 X

Pik*_*ppa 2 alter-table mariadb

我需要一些帮助。我正在尝试在新的 docker 实例上运行一些迁移脚本(旧的和本地的工作正常)。Mariadb,Innodb 引擎。

我有这样的迁移:

ALTER TABLE userinfo DROP COLUMN barcode
Run Code Online (Sandbox Code Playgroud)

这给了我错误:StatementEnd 错误代码:1072。表中不存在键列“条形码”

该专栏存在!这是我的显示创建表:

CREATE TABLE userinfo (
  id int(11) unsigned NOT NULL AUTO_INCREMENT,
  barcode varchar(45) NOT NULL,
  store_id int(11) unsigned DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY store_id_barcode_UNIQUE (`store_id`,`barcode`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
Run Code Online (Sandbox Code Playgroud)

我尝试了类似的方法ALTER TABLE userinfo ADD KEY "barcode" ("barcode"),但 DROP 语句仍然不起作用。

PS 我从 CREATE 语句中删除了很多列,否则该线程将太长而无法阅读。

for*_*pas 5

更改表/删除列

MariaDB 从 10.2.8 开始
不允许删除属于多列 UNIQUE 约束一部分的列...

首先,删除属于其中一部分的唯一键barcode,然后您就可以删除它:

ALTER TABLE userinfo DROP KEY store_id_barcode_UNIQUE;
ALTER TABLE userinfo DROP COLUMN barcode;
Run Code Online (Sandbox Code Playgroud)

请参阅演示