Kein Export fetchAll / execute in der Resource mysql-async
Ein Script wurde für ein älteres Datenbanksystem geschrieben als das, das du installiert hast.
Mach das zuerst
Installier die Version, die das Script erwartet, oder bitte den Verkäufer um eine aktualisierte.
Was es bedeutet
Ein Script ruft die API einer Datenbank-Resource auf, die du nicht installiert hast. FiveM hatte drei davon: mysql-async, dann ghmattimysql, jetzt oxmysql — und für eine geschriebene Scripts rufen Exports auf, die die anderen nicht haben.
Was es auslöst
Sortiert danach, wie oft es die Antwort ist.
- 1
Das Script will mysql-async und du betreibst oxmysql
oxmysql bringt eine Kompatibilitätsschicht mit, aber sie muss aktiviert werden und deckt nicht alles ab.
- 2
Die alte Resource ist installiert, aber nicht gestartet
Im Ordner vorhanden, in der server.cfg nicht.
- 3
Zwei Datenbank-Resources gleichzeitig
Beide installiert, beide halb konfiguriert, und die Scripts auf sie verteilt.
- 4
Ein Export, den es nie gab
fetchSyncgehörte zu ghmattimysql,fetchAllzu mysql-async. Keines ist oxmysqls eigene API.
Wie du erkennst, welcher deiner ist
print(GetResourceState('oxmysql'), GetResourceState('mysql-async'))Und such dann im fehlschlagenden Script, welche API es nutzt:
grep -rn "MySQL\.\|exports\['mysql-async'\]\|exports.oxmysql" mein-script/
Wo du nachsehen musst
Die Datenbankaufrufe des Scripts und welche Datenbank-Resource die server.cfg startet.
Wie du es behebst
Einigt euch auf oxmysql und schalte die Kompatibilitätsschicht für alte Scripts ein:
# server.cfg set mysql_connection_string "mysql://user:pass@host/db?charset=utf8mb4" ensure oxmysql # nur wenn du noch Scripts für die alten APIs betreibst set oxmysql_slow_query_warning 200
Bei einem Script, das du ändern kannst, portier den Aufruf:
-- mysql-async
MySQL.Async.fetchAll('SELECT * FROM users WHERE identifier = @id', { ['@id'] = id }, cb)
-- oxmysql
MySQL.query('SELECT * FROM users WHERE identifier = ?', { id }, cb)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.