更新了 Azerothcore,现在无法启动。 MySQL 错误 "Unknown column 'innTriggerId' in 'field list'"

Updated Azerothcore, now it can't start. MySQL Errors "Unknown column 'innTriggerId' in 'field list'"

按照此处的说明进行操作:https://www.azerothcore.org/wiki/linux-keeping-the-server-up-to-date
在这里:https://www.azerothcore.org/wiki/database-keeping-the-server-up-to-date

我拉取、重新编译并仔细检查我的 worldserver.conf

Updates.EnableDatabases = 7

那我运行worldserver.

它列出了很多文件已应用于数据库,但现在目录中缺少它们。

每个数据库都表示它们是最新的

>> Auth database is up-to-date! Containing 0 new and 8 archived updates.
...
>> Character database is up-to-date! Containing 0 new and 14 archived updates.
...
>> World database is up-to-date! Containing 0 new and 702 archived updates.

但是在 mysql 错误弹出后立即:

In mysql_stmt_prepare() id: 34, sql: "SELECT guid, account, name, race, class, gender, level, xp, money, skin, face, hairStyle, hairColor, facialStyle, bankSlots, restState, playerFlags, position_x, position_y, position_z, map, orientation, taximask, cinematic, totaltime, leveltime, rest_bonus, logout_time, is_logout_resting, resettalents_cost, resettalents_time, trans_x, trans_y, trans_z, trans_o, transguid, extra_flags, stable_slots, at_login, zone, online, death_expire_time, taxi_path, instance_mode_mask, arenaPoints, totalHonorPoints, todayHonorPoints, yesterdayHonorPoints, totalKills, todayKills, yesterdayKills, chosenTitle, knownCurrencies, watchedFaction, drunk, health, power1, power2, power3, power4, power5, power6, power7, instance_id, talentGroupsCount, activeTalentGroup, exploredZones, equipmentCache, ammoId, knownTitles, actionBars, grantableLevels, innTriggerId FROM characters WHERE guid = ?"
Unknown column 'innTriggerId' in 'field list'
In mysql_stmt_prepare() id: 54, sql: "SELECT spell, category, item, time, needSend FROM character_spell_cooldown WHERE guid = ?"
Unknown column 'category' in 'field list'
In mysql_stmt_prepare() id: 216, sql: "INSERT INTO characters (guid, account, name, race, class, gender, level, xp, money, skin, face, hairStyle, hairColor, facialStyle, bankSlots, restState, playerFlags, map, instance_id, instance_mode_mask, position_x, position_y, position_z, orientation, trans_x, trans_y, trans_z, trans_o, transguid, taximask, cinematic, totaltime, leveltime, rest_bonus, logout_time, is_logout_resting, resettalents_cost, resettalents_time, extra_flags, stable_slots, at_login, zone, death_expire_time, taxi_path, arenaPoints, totalHonorPoints, todayHonorPoints, yesterdayHonorPoints, totalKills, todayKills, yesterdayKills, chosenTitle, knownCurrencies, watchedFaction, drunk, health, power1, power2, power3, power4, power5, power6, power7, latency, talentGroupsCount, activeTalentGroup, exploredZones, equipmentCache, ammoId, knownTitles, actionBars, grantableLevels, innTriggerId) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
Unknown column 'innTriggerId' in 'field list'
In mysql_stmt_prepare() id: 217, sql: "UPDATE characters SET name=?,race=?,class=?,gender=?,level=?,xp=?,money=?,skin=?,face=?,hairStyle=?,hairColor=?,facialStyle=?,bankSlots=?,restState=?,playerFlags=?,map=?,instance_id=?,instance_mode_mask=?,position_x=?,position_y=?,position_z=?,orientation=?,trans_x=?,trans_y=?,trans_z=?,trans_o=?,transguid=?,taximask=?,cinematic=?,totaltime=?,leveltime=?,rest_bonus=?,logout_time=?,is_logout_resting=?,resettalents_cost=?,resettalents_time=?,extra_flags=?,stable_slots=?,at_login=?,zone=?,death_expire_time=?,taxi_path=?,arenaPoints=?,totalHonorPoints=?,todayHonorPoints=?,yesterdayHonorPoints=?,totalKills=?,todayKills=?,yesterdayKills=?,chosenTitle=?,knownCurrencies=?,watchedFaction=?,drunk=?,health=?,power1=?,power2=?,power3=?,power4=?,power5=?,power6=?,power7=?,latency=?,talentGroupsCount=?,activeTalentGroup=?,exploredZones=?,equipmentCache=?,ammoId=?,knownTitles=?,actionBars=?,grantableLevels=?,innTriggerId=?,online=? WHERE guid=?"
Unknown column 'innTriggerId' in 'field list'
In mysql_stmt_prepare() id: 428, sql: "DELETE FROM item_loot_storage WHERE containerGUID = ? AND itemid = ? AND count = ? AND item_index = ? LIMIT 1"
Unknown column 'item_index' in 'where clause'
In mysql_stmt_prepare() id: 429, sql: "INSERT INTO item_loot_storage (containerGUID, itemid, item_index, count, randomPropertyId, randomSuffix, follow_loot_rules, freeforall, is_blocked, is_counted, is_underthreshold, needs_quest, conditionLootId) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
Unknown column 'item_index' in 'field list'
In mysql_stmt_prepare() id: 396, sql: "SELECT spell, category, time FROM pet_spell_cooldown WHERE guid = ?"
Unknown column 'category' in 'field list'
In mysql_stmt_prepare() id: 399, sql: "INSERT INTO pet_spell_cooldown (guid, spell, category, time) VALUES (?, ?, ?, ?)"

完整输出粘贴:https://pastebin.com/tHeTNVbW

我也尝试使用 db_assembler 工具,但是当我尝试启动服务器时,我仍然得到相同的输出。

有没有我遗漏的步骤?谢谢!

这不是一个很好的解决方案,因为我仍然收到错误,给我的印象是最近更新的一些世界对象和脚本不起作用。

我转到 Azerothcore github 并手动搜索在 mysql 错误中标记为缺失的字段。然后我将这些行(例如 'ALTER TABLE...')和任何后续的 updates/inserts 复制到我的 mysql Workbench 客户端,在那里我手动 运行 所有这些更新直到该死的东西开始了。

我最终得到了这样的结果:

use acore_characters;
ALTER TABLE `characters` ADD COLUMN `innTriggerId` INT UNSIGNED NOT NULL AFTER `deleteDate`;
ALTER TABLE `character_spell_cooldown` ADD COLUMN `category` MEDIUMINT UNSIGNED DEFAULT 0 NOT NULL AFTER `spell`;
etc...

完整粘贴:https://pastebin.com/bkLnYmys
(注意:这正是我所需要的运行,它很可能对你有所不同

这是暂时的,但显然我宁愿一切正常。在这一点上,我认为我最好的选择是重新开始并手动导入所有字符数据。

  1. 需要结帐才能提交 - https://github.com/azerothcore/azerothcore-wotlk/commit/9e3949232cc0ad1703eb4b8bba66dd54b4246ceb
  2. 具有数据库自动更新的启动核心(Updates.EnableDatabases inside worldserver.conf
  3. 结账到HEAD
  4. 再次启动核心