更新Azerothcore后启动失败 报MySQL未知字段innTriggerId类错误
AzerothCore更新后数据库字段缺失问题解决方案
该问题由服务端代码版本与数据库结构版本不匹配导致,即便自动更新提示数据库已为最新,也可能是迁移文件路径配置错误、本地迁移文件被修改、历史自定义表结构冲突导致自动更新流程跳过了缺失字段的添加。
解决步骤
1. 同步最新官方迁移文件
回到AzerothCore源码根目录,执行以下命令恢复官方默认的SQL迁移文件,拉取最新代码:
git checkout -- data/sql/ git pull origin master
确保你当前使用的是官方master分支的无修改版本。
2. 修正worldserver自动更新配置
打开worldserver.conf,检查以下两项配置:
- 确认
Updates.EnableDatabases = 7已正确设置 - 将
Updates.SourcePath修改为你本地源码data/sql目录的绝对路径,比如源码存放在/home/azerothcore/时,配置为:Updates.SourcePath = "/home/azerothcore/data/sql"
避免相对路径导致程序无法识别最新的迁移文件。
3. 手动补全缺失字段(可选快速修复)
如果不需要走完整自动更新流程,可以直接在MySQL的characters库执行以下SQL语句补全缺失字段:
ALTER TABLE `characters` ADD COLUMN `innTriggerId` INT UNSIGNED NOT NULL DEFAULT 0 AFTER `grantableLevels`; ALTER TABLE `character_spell_cooldown` ADD COLUMN `category` MEDIUMINT UNSIGNED NOT NULL DEFAULT 0 AFTER `spell`; ALTER TABLE `item_loot_storage` ADD COLUMN `item_index` TINYINT UNSIGNED NOT NULL DEFAULT 0 AFTER `itemid`; ALTER TABLE `pet_spell_cooldown` ADD COLUMN `category` MEDIUMINT UNSIGNED NOT NULL DEFAULT 0 AFTER `spell`;
4. 重新编译启动
完成上述操作后,重新编译服务端,再启动worldserver即可解决报错。
额外注意
如果你使用db_assembler工具生成数据库,需要先拉取最新的SQL文件后再重新生成完整库,不要使用之前缓存的旧SQL数据包。
内容的提问来源于stack exchange,提问作者WAFFO
相关产品推荐
相关产品推荐

