Перейти к содержимому

Обновление и база данных

Схему никогда не импортируют вручную. Миграции у bs_core лежат в bs_core/sql/ (001_core_schema.sql … 048_backpack_refresh.sql), а список в bs_core/server/sv_migrations.lua. При старте он выполняет каждый файл, которого ещё нет в таблице bs_migrations, и записывает его. Уже применённые больше не запускаются.

Так что обновление с новой таблицей это просто: обновить файлы, перезапустить. Консоль выводит, какую миграцию применили.

Некоторые ресурсы (bs_config, bs_guard, bs_vip, прогресс bs_factions) при старте ещё и сами создают свои таблицы, если их нет. Это страховка, настоящий источник всё равно миграция.

Перед любым обновлением: сделай резервную копию

Заголовок раздела «Перед любым обновлением: сделай резервную копию»
Окно терминала
powershell -ExecutionPolicy Bypass -File .\tools\Backup-Database.ps1 -Database beyondsurvival -User beyond

Он спросит пароль и запишет .sql с отметкой времени в database-backups/. Используется --single-transaction, рабочую базу он не блокирует и не меняет.

Делай это каждый раз. Миграции идут только вперёд, “down” нет.

  1. Останови сервер.
  2. Сделай резервную копию (выше).
  3. Замени изменённые ресурсы. Свои отредактированные конфиг-файлы сохрани или сравни с новыми. Новые ключи в конфиге обычно нужны новому коду.
  4. Не трогай server.private.cfg. Посмотри в server.cfg.example новые строки ensure и добавь их в свой.
  5. Запусти tools\Test-Deployment.ps1.
  6. Запусти сервер и следи за консолью на предмет красных строк.

Твои профили F1 лежат в базе данных и переживают обновления. Ключ профиля, которого больше нет, просто игнорируется.

Никогда не копируй cache/ между машинами или версиями, удали её, если после обновления что-то выглядит странно.

Релизный пакет специально не содержит базу данных. Сделай копию на старом, а на новом создай новую пустую базу и:

Окно терминала
powershell -ExecutionPolicy Bypass -File .\tools\Import-Database.ps1 -Database beyondsurvival -User beyond -BackupFile D:\transfer\beyondsurvival-YYYYMMDD-HHMMSS.sql

Он никогда не удаляет базу и сначала просит ввести IMPORT. Храни исходную копию, пока новый сервер не проработает нормально какое-то время.

Считай этот .sql файл приватным. В нём каждый персонаж, инвентарь, банк фракции и идентификатор.

txadmin/recipe.yaml разворачивает релиз и новую пустую базу через Server Deployer в txAdmin. Это новый мир, ничего из старой базы не переносится. Структуру zip см. в txadmin/README.md.