THE ORB
Studio wird gestartet

Kein Export fetchAll / execute in der Resource mysql-async

Ein Script wurde für ein älteres Datenbanksystem geschrieben als das, das du installiert hast.

groupsDieses Script tut nichtspersonDas kannst du beheben

Mach das zuerst

Installier die Version, die das Script erwartet, oder bitte den Verkäufer um eine aktualisierte.

bug_reportFüg lieber deine ganze Konsole ein

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. 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. 2

    Die alte Resource ist installiert, aber nicht gestartet

    Im Ordner vorhanden, in der server.cfg nicht.

  3. 3

    Zwei Datenbank-Resources gleichzeitig

    Beide installiert, beide halb konfiguriert, und die Scripts auf sie verteilt.

  4. 4

    Ein Export, den es nie gab

    fetchSync gehörte zu ghmattimysql, fetchAll zu 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 öffnen

Für diese Art Fehler Script Optimizer erkennt die Abfragemuster, die das verursachen.

Fehler, die mit diesem zusammen auftreten