如何通过对代码脚本,模块和数据库添加的任务,供应商,项目的自定义来正确更新Docker Azerothcore 1老板脚本 2模块 3自定义数据库更改先备份经常更新!使用Docker时如何更新AzerothCore

问题描述

我在Docker容器中运行Azerothcore-WOLTK。 我想更新服务器,因为我阅读了一个重要的安全修复程序。

但是,自从我去年(2019年12月)首次安装服务器以来,我从未更新过服务器。从那时起,我以多种方式自定义服务器:

  1. 我已经定制了一些老板脚本以与两个玩家一起正常使用。
  2. 我已经安装了一些模块,其中一个模块还需要编译一些额外的代码以及运行一些SQL查询
  3. 我自己修改数据库添加了任务,NPC,供应商和物品

因此,我非常担心自己最终会弄乱一切。在保持我执行的所有自定义功能的同时,我将在如何继续将服务器更新到最新版本方面向您寻求帮助。

我特别担心数据库更改,因为我认为我可以备份更新的老板脚本,进行git pull并在构建之前再次替换它们(我之后应该做一个fork,我没有考虑过)。 .. 但是无论如何,考虑到我正在使用docker安装,如果您能逐步指导我,我将非常感激。

对于与数据库相关的任何事情,我都使用Heidi sql,因此我可以将其用于任何数据库过程。我对SQL查询不是很熟练,但是我应该能够根据需要导入.sql文件

我知道我要问的很多,所以请不要感到马上就回答的压力。如果您有机会能帮助我,我将非常感谢。

谢谢您的时间:)

解决方法

我会尽力回答您提到的所有问题:

1。老板脚本。

可能发生的最糟糕的事情是,您在使用git提取最新更改的同时遇到了合并冲突。因此,您将必须手动解决它们。不一定困难,尤其是在您的情况下。这只是老板脚本,因此,从本质上讲,它们是完全独立的,并且在与它们混淆时,您一定不会破坏其他任何东西。

2。模块

这些模块应该根本不是问题。正是由于这个原因,模块才得以存在:被隔离,并且在更新内核或类似组件的情况下不会引起问题。

我在这里唯一关心的是需要核心更改的模块。我不知道您安装了什么模块,通常不会发生这种情况。正确的AzerothCore模块应该不需要任何核心更改。 但是,同样,最糟糕的是一些git merge冲突,我希望没有太大的问题(取决于模块所要求的这些更改的大小和侵入性)。

3。自定义数据库更改。

黄金法则是:始终将自定义SQL查询存储在某个地方,以便可以轻松地重新应用它们。例如,请始终在DELETE之前使用INSERT,并尽可能使用UPDATE,等等。

因此,您只需要一个文件(或一堆文件),其中包含与您进行的自定义更改相对应的所有SQL代码。如果没有,您仍然可以从数据库中提取它。

然后,如果您觉得有必要,可以随时在更新核心后重新应用它们。也有可能根本不需要重新应用它们。或者,您可能想从一个新的AzerothCore世界数据库开始并重新应用您的更改。这确实取决于具体情况,但是无论如何,您都可以(只要将更改保存在SQL文件中即可)。

您可以使用Keira3编辑数据库,或者只是提取您的更改以备不时之需。例如,您可以打开一个实体并复制其“完整查询”。

先备份

在开始升级过程之前,请创建以下内容的备份:

  • 您的数据库
  • 您已修改的源文件(例如boss等)

经常更新!

但是,自从去年(2019年12月)首次安装服务器以来,我从未更新过服务器。

完全不建议这样做!您应该经常(至少每周一次)更新AzerothCore。这样做有很多充分的理由,其中之一是:经常这样做会更容易。

使用Docker时如何更新AzerothCore

这里已经提出了有关使用Docker更新AC的通用问题:How to update azerothcore-wotlk docker container