Przejdź do głównej zawartości

Migracje bazy danych

Nigdy nie importujesz SQL ręcznie. bs_core tworzy i aktualizuje schemat sam przy starcie.

  • Pliki migracji są w bs_core/sql/, numerowane (obecnie od 001_core_schema.sql do 035_faction_jobs.sql).
  • Przy starcie bs_core uruchamia po kolei każdy plik ze swojej listy, który nie jest jeszcze zapisany, i zapisuje go w tabeli bs_migrations razem z sumą kontrolną. Plik nigdy nie leci dwa razy.
  • Konsola wypisuje, co zostało zastosowane przy tym starcie.
  • Kilka resource’ów tworzy własne małe tabele przez CREATE TABLE IF NOT EXISTS przy starcie (na przykład bs_tester i bs_config). Przy nich też nic nie robisz.
PlikDodaje
029_vehicle_world.sqlPojazdy świata, brakujące części
030_user_language.sqlbs_users.language
031_building.sqlbs_build_pieces, bs_build_bases, przenosi stare konstrukcje do frakcji
032_crafting.sqlKolejki stacji, pułapki, zwroty offline, punkty recyclera
033_medical.sqlbs_character_medical: rany, infekcja, choroba, krew
034_base_flags.sqlFlagi safezone i placówek, ogłoszone raidy
035_faction_jobs.sqlCzłonkowie prac, tablica, wyniki, wybory prac, praca w garażu
045_darkzone.sqlDark Zone (1.1.0)
046_building_v2.sqlBudowanie v2: prąd, generatory, flagi (1.1.0)
047_faction_emblems.sqlEmblematy frakcji (1.1.0)
048_backpack_refresh.sqlPrzedmioty plecaków przemianowane, zawartość zostaje (1.1.0)
  1. Weź kolejny numer: bs_core/sql/036_my_change.sql.
  2. Napisz ją tak, żeby była bezpieczna na bazie, która już ma dane. Dodawaj kolumny z wartościami domyślnymi, nie usuwaj rzeczy, których ludzie jeszcze używają.
  3. Dodaj nazwę pliku do listy w bs_core/server/sv_migrations.lua (M.files). Lista jest zakodowana na sztywno. Plik, którego w niej nie ma, po cichu nigdy się nie uruchomi.
  4. Zrestartuj serwer (restart samego bs_core wyrzuca wszystkich).

Przed aktualizacją z migracjami zrób backup. W Windowsie:

Okno terminala
powershell -ExecutionPolicy Bypass -File .\tools\Backup-Database.ps1

Zobacz Aktualizacja i baza danych, żeby przywrócić dane i przenosić postacie między serwerami.