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

aurhwmvo  于 2022-11-29  发布在  其他
关注(0)|答案(1)|浏览(180)

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

ALTER TABLE userinfo DROP COLUMN barcode

这就给了我一个错误:语句结束错误代码:1072.表中不存在键列"barcode"
该列存在!这是我的SHOW CREATE TABLE:

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

我尝试了类似ALTER TABLE userinfo ADD KEY "barcode" ("barcode")的语句,但DROP语句仍然不起作用。
P.S. i从CREATE语句中删除了许多列,否则此线程将太长而无法读取。

xpszyzbs

xpszyzbs1#

从更改表/删除列:
从10.2.8开始的MariaDB
不允许删除属于多列UNIQUE约束一部分的列...
首先,删除包含barcode的唯一键,然后就可以删除它了:

ALTER TABLE userinfo DROP KEY store_id_barcode_UNIQUE;
ALTER TABLE userinfo DROP COLUMN barcode;

请参阅demo

相关问题