You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署Azerothcore启动报ERROR 1060 重复列名'artkit0'

错误根因

该报错触发逻辑为:AzerothCore启动时自动执行世界库更新SQL2022_06_14_01.sql时,尝试新增artkit0列,但目标表中该列已存在,触发MySQL 1060重复列错误。绝大多数场景为数据库更新逻辑冲突导致,常见诱因包括:

  • 手动导入过包含该字段的SQL文件,同时开启了容器自带的自动更新机制
  • 旧版本残留的数据库持久化数据和新版本镜像的更新逻辑不匹配
  • 本地仓库代码和运行的Docker镜像版本不一致,导致更新文件重复执行
解决方法

按操作难度从低到高排序,新手优先选第一种:

  • 方案1:全量清理旧数据重新初始化(无自定义数据首选)
    1. 停止所有运行中的AzerothCore容器:
      docker compose down
      
    2. 删除数据库持久化目录,默认路径为部署目录下的docker/database-data,该操作会清空所有旧游戏数据,首次部署无自定义内容可直接操作。
    3. 同步最新版本资源:
      docker compose pull
      # 本地clone仓库部署需额外执行
      git pull
      
    4. 重新启动容器等待初始化完成:
      docker compose up -d
      
  • 方案2:手动删除冲突字段(保留已有数据首选)
    1. 进入MySQL容器连接acore_world数据库。
    2. 打开报错路径下的2022_06_14_01.sql文件,查看第3行ALTER TABLE语句操作的目标表(通常为creature_template表)。
    3. 执行SQL删除已存在的冲突字段:
      ALTER TABLE 你查到的目标表名 DROP COLUMN artkit0;
      
    4. 重启AzerothCore服务,自动更新会重新执行该SQL完成更新。
  • 方案3:标记更新为已执行(仅临时应急用)
    向acore_world库的updates表插入对应SQL文件的执行记录,让自动更新程序跳过该文件,该方法可能引发后续版本连锁冲突,不推荐新手使用。
注意事项
  • 自动更新和手动导入SQL两种更新方式只能选一种,新手全程使用容器自动更新即可,不要手动往库中导入仓库自带的更新SQL
  • 跨大版本升级不要直接复用旧的持久化数据,建议按方案1清库初始化
  • 部署时保证本地仓库代码和Docker镜像版本完全一致,避免更新文件错位

内容的提问来源于stack exchange,提问作者Sam Brown

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 04:45:38