5MCustoms

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

TabelleInhalt
charactersCharaktere je Lizenz und Slot: Name, Geburtsdatum, Geld, Job, Gang, Position, Metadaten
jobsJobs mit Rängen; Grundbestand für arbeitslos, Polizei und Rettungsdienst
_5mc_migrationsVerzeichnis 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.