THE ORB
Démarrage du studio

Pas d'export fetchAll / execute dans la ressource mysql-async

Un script a été écrit pour un système de base de données plus ancien que celui que vous avez installé.

groupsCe script ne fait rienpersonVous pouvez le corriger

Faites d'abord ceci

Installez la version attendue par le script, ou demandez-en une à jour au vendeur.

bug_reportCollez plutôt toute votre console

Ce que ça veut dire

Un script appelle l'API d'une ressource de base de données qui n'est pas celle que vous avez installée. FiveM en a connu trois : mysql-async, puis ghmattimysql, maintenant oxmysql, et les scripts écrits pour l'une appellent des exports que les autres n'ont pas.

Ce qui la provoque

Classé par fréquence : la cause la plus probable en premier.

  1. 1

    Le script veut mysql-async et vous utilisez oxmysql

    oxmysql fournit une couche de compatibilité, mais il faut l'activer et elle ne couvre pas tout.

  2. 2

    L'ancienne ressource est installée mais pas démarrée

    Présente dans le dossier, absente de server.cfg.

  3. 3

    Deux ressources de base de données en même temps

    Les deux installées, chacune à moitié configurée, et les scripts répartis entre elles.

  4. 4

    Un export qui n'a jamais existé

    fetchSync venait de ghmattimysql ; fetchAll de mysql-async. Aucun n'est l'API native d'oxmysql.

Comment savoir laquelle est la vôtre

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

Puis cherchez dans le script en échec quelle API il utilise :

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

Où regarder

Les appels base de données du script, et quelle ressource de base démarre server.cfg.

Comment la corriger

Standardisez sur oxmysql et activez la couche de compatibilité pour les vieux scripts :

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

# seulement si vous exécutez encore des scripts écrits pour les anciennes API
set oxmysql_slow_query_warning 200

Pour un script que vous pouvez modifier, portez l'appel :

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

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

Toujours bloqué sur votre propre code ?

Cette page explique ce que cette erreur signifie en général. Collez votre console dans Server Fixer : il classera tout ce qui s'y trouve et vous dira quoi faire en premier ; et si vous préférez ne pas y toucher, ORBIE peut réparer le script et vous rendre la ressource prête à déposer.

bug_reportOuvrir le Server Fixer

Pour ce type d'erreur, le Script Optimizer repère les motifs de requête à l'origine de ceci.

Les erreurs qui voyagent avec celle-ci