如何确保数据库是最新的

How to make sure that the DB is up to date

When installing/updating AzerothCore 有时会遇到这样的错误:

[ERROR]: In mysql_stmt_prepare() id: 3, sql:

[ERROR]: Unknown column 'entry' in 'field list'

[ERROR]: Unknown column 'dmg_multiplier' in 'field list'

[ERROR]: Table 'acore_world.graveyard_zone' doesn't exist

[ERROR]: Unknown column 'mindmg' in 'field list'

ERROR: Your database structure is not up to date. Please make sure you've executed all queries in the sql/updates folders.

这通常意味着数据库结构不是最新的。

更具体地说,本地数据库版本与本地核心版本不一致。

这导致了以下问题:

2021 年更新:

最新的 AzerothCore 现在在核心中集成了 自动数据库更新程序

您只需通过 worldserver.conf 通过设置启用它:

Updates.EnableDatabases = 7

然后您的 worldserver 进程将自动为您更新所有数据库。

您需要 最新的 AC 才能获得此功能。


原回答及解释:

AzerothCore 有三个数据库:authcharactersworld。所有这些都需要正确更新才能启动服务器应用程序。

每个数据库都有一个 table version_db_xxxx,它在 其最后一列的名称.

中保存有关数据库版本的信息
  • auth 数据库有 version_db_auth table
  • 字符 DB 有 version_db_characters table
  • 世界数据库有 version_db_world table

数据库版本将以YYYY_MM_DD_XX的格式表示,基本上是一个日期后跟一个数字(XX)。

此值将是此类 table 的最后一列的名称,它对应于已应用于该数据库的最后一个 SQL 更新文件的名称。

可以在 azerothcore-wotlk/data/sql/updates/db_xxxx/ 目录中找到 SQL 更新文件(其中 xxx 是数据库名称):

为了确保数据库是最新的,应该比较(每个数据库):

  • version_db_xxxxtable
  • 的最后一列名称
  • 最近的 sql 文件名包含在data/sql/updates/db_xxxx

(most recent 就最近的日期而言。如果日期相同,pending number 最大的文件是最近的)

如果值相同,则数据库是最新的。否则,需要通过按顺序导入所有缺失的 SQL 更新文件来更新数据库。