Datenbank
5MCustoms spricht MariaDB oder MySQL direkt an. Es braucht kein oxmysql und keine andere Datenbank-Ressource: der Verbindungspool steckt im Framework.
Verbindung setzen
Eine Convar genügt:
set mysql_connection_string "mysql://benutzer:passwort@127.0.0.1:3306/fivemc?charset=utf8mb4"
Alternativ das aus oxmysql bekannte Format:
set mysql_connection_string "host=127.0.0.1;user=benutzer;password=passwort;database=fivemc"
Ist die Convar leer, bricht der Start mit einem Hinweis ab, statt später unklare Fehler zu werfen.
Migrationen
Jedes Modul bringt seine eigenen SQL-Dateien mit. Der Core spielt sie beim Start
ein und merkt sich in der Tabelle _5mc_migrations, was bereits gelaufen ist.
Das gilt auch für Module, die du später dazukaufst: sie melden ihre Migrationen
beim Core an, sobald sie starten.
Ist die Datenbank beim Start noch nicht bereit, wartet der Core mit wachsendem Abstand (1, 3, 6, 10 Sekunden), bevor er aufgibt. Ein langsam startender Datenbankdienst ist damit kein Problem.
Ohne laufenden Server
Wenn du Quellzugriff hast, kannst du Migrationen auch außerhalb des Servers einspielen — praktisch für Wartungsfenster:
pnpm db:status # zeigt nur, was offen ist
pnpm db:migrate # spielt alle offenen Migrationen ein
node tools/db.mjs --resource 5mc_inventory # nur ein Modul
Beide Wege teilen sich dasselbe Verzeichnis in _5mc_migrations, es läuft also
nichts doppelt.
Nur vorwärts
Es gibt kein Rollback. Vor einer Migration, die das Schema ändert, ist eine Sicherung der Rückweg.
Sicherungen
pnpm db:backup # mysqldump nach backups/, Standard 14 Tage Aufbewahrung
pnpm db:check # reiner Verbindungstest
Der Dump läuft mit --single-transaction, sperrt also keine Tabellen. Das
Passwort geht über eine Umgebungsvariable statt über die Kommandozeile, damit es
nicht in der Prozessliste steht.
Sicherungen enthalten Spielerdaten. Sie gehören nicht in eine Versionsverwaltung und nicht in einen öffentlich erreichbaren Ordner.
Was wo liegt
| Tabelle | Inhalt |
|---|---|
characters | Charaktere je Lizenz und Slot: Name, Geburtsdatum, Geld, Job, Gang, Position, Metadaten |
jobs | Jobs mit Rängen; Grundbestand für arbeitslos, Polizei und Rettungsdienst |
_5mc_migrations | Verzeichnis der eingespielten Migrationen je Ressource |
Jedes weitere Modul legt eigene Tabellen an. Geld, Job und Gang stehen als JSON in der Charakterzeile, damit ein Charakter in einem Lesevorgang vollständig ist.
Datenübernahme aus QBCore
Es gibt kein Migrationsskript von QBCore- oder ESX-Beständen auf das 5MCustoms-Schema. Ein Umzug mit bestehender Spielerbasis wäre ohne ein solches Skript ein Wipe. Plane 5MCustoms deshalb als Neustart oder Zweitserver, oder sprich uns vorher an.
