Docker新实例执行MariaDB迁移脚本报错:Key column 'barcode'不存在
解决方案
报错的核心原因是**barcode列被包含在联合唯一索引store_id_barcode_UNIQUE中**,直接执行DROP COLUMN会因为索引依赖失败,MariaDB此处的错误提示不够准确,才显示“列不存在”。
按以下步骤操作即可解决:
- 先删除依赖
barcode列的联合索引:
ALTER TABLE userinfo DROP INDEX store_id_barcode_UNIQUE;
- 再执行删除列的命令:
ALTER TABLE userinfo DROP COLUMN barcode;
补充说明
你之前尝试添加单独的barcode索引无法解决问题,因为冲突点在于联合索引对该列的依赖,而非缺少单独索引。旧实例和本地环境能正常执行,大概率是因为那些环境中该联合索引已被移除,或者迁移脚本在执行时先处理了索引逻辑。
另外可额外排查:确保在Docker实例中操作的是正确的数据库(执行SELECT DATABASE()确认),避免因选错库导致操作了错误的表。
内容的提问来源于stack exchange,提问作者Pikappa
相关产品推荐
相关产品推荐

