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é.
Faites d'abord ceci
Installez la version attendue par le script, ou demandez-en une à jour au vendeur.
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
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
L'ancienne ressource est installée mais pas démarrée
Présente dans le dossier, absente de server.cfg.
- 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
Un export qui n'a jamais existé
fetchSyncvenait de ghmattimysql ;fetchAllde 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 FixerPour ce type d'erreur, le Script Optimizer repère les motifs de requête à l'origine de ceci.