THE ORB
Uruchamiam studio

No such export fetchAll / execute in resource mysql-async

Skrypt został napisany pod starszy system bazodanowy niż ten, który masz zainstalowany.

groupsTen skrypt nic nie robipersonMożesz to naprawić

Zrób najpierw to

Albo zainstaluj wersję, której skrypt oczekuje, albo poproś sprzedawcę o zaktualizowaną.

bug_reportWklej zamiast tego całą konsolę

Co to znaczy

Skrypt woła API zasobu bazodanowego, którego nie masz zainstalowanego. FiveM przeszedł przez trzy takie — mysql-async, potem ghmattimysql, teraz oxmysql — a skrypty pisane pod jeden wołają eksporty, których pozostałe nie mają.

Co to powoduje

Uszeregowane według tego, jak często są odpowiedzią.

  1. 1

    Skrypt chce mysql-async, a ty uruchamiasz oxmysql

    oxmysql ma warstwę zgodności, ale trzeba ją włączyć i nie pokrywa wszystkiego.

  2. 2

    Stary zasób jest zainstalowany, ale nieuruchomiony

    Jest w folderze, nie ma go w server.cfg.

  3. 3

    Dwa zasoby bazodanowe naraz

    Oba zainstalowane, każdy skonfigurowany w połowie, a skrypty rozdzielone między nie.

  4. 4

    Eksport, którego nigdy nie było

    fetchSync należał do ghmattimysql; fetchAll do mysql-async. Żaden z nich nie jest natywnym API oxmysql.

Jak poznać, który jest twój

print(GetResourceState('oxmysql'), GetResourceState('mysql-async'))

Potem przeszukaj wadliwy skrypt pod kątem tego, którego API używa:

grep -rn "MySQL\.\|exports\['mysql-async'\]\|exports.oxmysql" moj-skrypt/

Gdzie szukać

Wywołania bazodanowe skryptu i to, który zasób bazy uruchamia server.cfg.

Jak to naprawić

Ustandaryzuj się na oxmysql i włącz warstwę zgodności dla starych skryptów:

# server.cfg
set mysql_connection_string "mysql://user:pass@host/db?charset=utf8mb4"
ensure oxmysql

# tylko jeśli wciąż uruchamiasz skrypty pisane pod stare API
set oxmysql_slow_query_warning 200

W skrypcie, który możesz edytować, przenieś wywołanie:

-- mysql-async
MySQL.Async.fetchAll('SELECT * FROM users WHERE identifier = @id', { ['@id'] = id }, cb)

-- oxmysql
MySQL.query('SELECT * FROM users WHERE identifier = ?', { id }, cb)

Wciąż utknąłeś na własnym kodzie?

Ta strona mówi, co ten błąd zwykle oznacza. Wklej swoją konsolę do Server Fixera, a uszereguje wszystko, co w niej jest, i powie, co zrobić najpierw; a jeśli wolisz tego nie ruszać, ORBIE naprawi skrypt i odda ci zasób gotowy do wrzucenia.

bug_reportOtwórz Server Fixer

Dla tego rodzaju błędu Script Optimizer wyłapuje wzorce zapytań, które to powodują.

Błędy, które chodzą z tym w parze