Datenbankverbindung fehlgeschlagen (oxmysql / mysql-async)
Dein Server erreicht seine Datenbank nicht. Nichts, was speichert oder lädt, funktioniert, bis das behoben ist.
Mach das zuerst
Prüf, ob die Datenbank läuft und ob die Verbindungszeile in server.cfg den richtigen Benutzer und das richtige Passwort hat.
Was es bedeutet
Die Datenbankschicht konnte MySQL nicht erreichen, oder erreichte es und wurde abgewiesen. Jede Abfrage in jeder Resource wird scheitern, bis das behoben ist — eine Wand aus zusammenhanglosen Datenbankfehlern darunter ist also zu erwarten und noch nicht lesenswert.
Der Node-Fehlercode sagt, welche Hälfte versagt hat:
• ECONNREFUSED — Host erreicht, nichts lauscht auf dem Port
• ETIMEDOUT — Host gar nicht erreicht (Firewall, falsche IP)
• ENOTFOUND / getaddrinfo — der Hostname löst nicht auf
• ER_ACCESS_DENIED_ERROR — MySQL erreicht, falscher Benutzer oder falsches Passwort
• ER_BAD_DB_ERROR — verbunden, aber diese Datenbank gibt es nicht
Was es auslöst
Sortiert danach, wie oft es die Antwort ist.
- 1
MySQL läuft nicht
Am häufigsten auf einem lokalen Rechner nach einem Neustart oder auf einer frischen Maschine, wo der Dienst nie aktiviert wurde.
- 2
Der Verbindungsstring ist falsch oder fehlerhaft
set mysql_connection_stringmuss eine einzige Zeile sein, in der server.cfg, vor den Resources, die sie nutzen. Beide Formate gehen, aber das mit Semikolon verzeiht keine Leerzeichen:set mysql_connection_string "mysql://user:password@localhost/database?charset=utf8mb4"
- 3
Ein Passwort mit Sonderzeichen ohne Maskierung
@,:,/und#in einem Passwort zerlegen die URI-Form. Kodier sie prozentual oder nimm die Schlüssel/Wert-Form. - 4
Der Benutzer hat von diesem Host aus keine Rechte
MySQL-Rechte gelten pro Host. Ein als
user@localhostangelegter Benutzer kann sich von einer anderen Maschine aus auch mit richtigem Passwort nicht verbinden. - 5
Die Datenbank gibt es noch nicht
Die Verbindung klappt, das USE scheitert. Das SQL des Frameworks wurde nie importiert.
Wie du erkennst, welcher deiner ist
Lies den Code, nicht den Satz. Versuch dann, dich mit denselben Zugangsdaten von derselben Maschine zu verbinden:
mysql -h 127.0.0.1 -u deinbenutzer -p deinedatenbank
Wenn das auch scheitert, liegt es an MySQL und nicht an FiveM. Beachte: localhost und 127.0.0.1 sind in MySQL-Rechten nicht austauschbar.
Wo du nachsehen musst
server.cfg, die Zeile set mysql_connection_string, und ob oxmysql vor allem, was abfragt, ensured wird.
Wie du es behebst
# server.cfg — vor jeder Resource, die die Datenbank anfasst set mysql_connection_string "mysql://fivem:pass@127.0.0.1/fivem?charset=utf8mb4" ensure oxmysql
Gib dem Benutzer die passenden Rechte, wenn er entfernt ist:
CREATE USER 'fivem'@'%' IDENTIFIED BY 'pass'; GRANT ALL PRIVILEGES ON fivem.* TO 'fivem'@'%'; FLUSH PRIVILEGES;
Hängst du immer noch an deinem eigenen Code?
Diese Seite sagt, was dieser Fehler üblicherweise bedeutet. Füg deine Konsole in Server Fixer ein: es sortiert alles darin und sagt dir, was zuerst dran ist; und wenn du lieber nicht ranwillst, kann ORBIE das Script reparieren und dir die Resource fertig zum Einsetzen zurückgeben.
bug_reportServer Fixer öffnenFür diese Art Fehler Script Optimizer erkennt die Abfragemuster, die das verursachen.