Win10下ac-docker编译需重建预编译头及world库膨胀问题咨询
预编译头构建错误修复方案
你遇到的报错为增量构建时旧预编译头和修改后的源码文件不匹配导致,对应报错样例如下:
fatal error: file '/azerothcore/src/server/game/Entities/GameObject/GameObject.h' has been modified since the precompiled header '/azerothcore/var/build/obj/src/server/game/CMakeFiles/game.dir/cmake_pch.hxx.pch' was built: size changed note: please rebuild precompiled header '/azerothcore/var/build/obj/src/server/game/CMakeFiles/game.dir/cmake_pch.hxx.pch' 1 error generated. make[2]: *** [src/server/game/CMakeFiles/game.dir/build.make:154: src/server/game/CMakeFiles/game.dir/AI/CoreAI/GuardAI.cpp.o] Error 1 make[2]: *** Waiting for unfinished jobs....
按照以下步骤操作即可完成预编译头重建:
- 进入ac-docker项目根目录(即存放
docker-compose.yml文件的目录) - 执行命令清理现有容器残留与构建缓存:
docker-compose down --volumes --remove-orphans - 执行无缓存全量构建命令触发重新生成预编译头:
docker-compose build --no-cache ac-worldserver - 构建完成后正常启动服务即可
可选轻量方案(无需全量构建镜像):
执行docker-compose run --rm ac-worldserver bash进入容器交互模式,找到报错提示的pch文件路径执行rm /azerothcore/var/build/obj/src/server/game/CMakeFiles/game.dir/cmake_pch.hxx.pch删除旧预编译头,之后在容器内执行make -j $(nproc)重新构建即可。
world数据库容量异常暴涨修复方案
该问题由2021年10月11日版本更新的日志记录机制变更导致,新版本默认开启了多类操作日志写入但未配置自动清理策略,日志持续累积引发库体积暴涨,修复步骤如下:
- 登录world数据库,执行以下SQL查询确认高占用表:
SELECT table_name AS `表名`, ROUND(((data_length + index_length) / 1024 / 1024), 2) AS `大小(MB)` FROM information_schema.TABLES WHERE table_schema = 'world' ORDER BY (data_length + index_length) DESC;
- 通常暴涨的表为
gm_log、command_log、player_login_log等日志类表,确认日志无保留需求后执行清空操作:TRUNCATE TABLE 对应表名称; - 调整worldserver.conf配置避免后续再次暴涨:
- 修改
Logs.Cleanup.Interval配置项为1440,即每天执行一次日志清理 - 修改
Logs.Cleanup.OldLogs.Days配置项为7~30,按需设置日志保留天数 - 若无需对应日志记录,可直接将对应日志类型的启用配置设为0,关闭日志写入
- 修改
内容的提问来源于stack exchange,提问作者irubenp
相关产品推荐
相关产品推荐

