THE ORB
Arrancando el studio

No existe el export fetchAll / execute en el recurso mysql-async

Un script fue escrito para un sistema de base de datos más viejo que el que tienes instalado.

groupsEse script no hace nadapersonPodés arreglarlo

Haz esto primero

Instala la versión que el script espera, o pídele al vendedor una actualizada.

bug_reportMejor pega tu consola entera

Qué significa

Un script está llamando a la API de un recurso de base de datos que no es el que tenés instalado. FiveM pasó por tres: mysql-async, después ghmattimysql, ahora oxmysql, y los scripts escritos para uno llaman a exports que los otros no tienen.

Qué lo provoca

Ordenado por la frecuencia con la que es la respuesta.

  1. 1

    El script quiere mysql-async y vos corrés oxmysql

    oxmysql trae una capa de compatibilidad, pero hay que activarla y no cubre todo.

  2. 2

    El recurso viejo está instalado pero no arrancado

    Está en la carpeta, no está en server.cfg.

  3. 3

    Dos recursos de base de datos a la vez

    Los dos instalados, cada uno a medio configurar, y los scripts repartidos entre ellos.

  4. 4

    Un export que nunca existió

    fetchSync era de ghmattimysql; fetchAll era de mysql-async. Ninguno es la API nativa de oxmysql.

Cómo saber cuál es el tuyo

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

Y después buscá en el script que falla cuál de las APIs usa:

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

Dónde mirar

Las llamadas a la base de datos del script, y qué recurso de base de datos arranca server.cfg.

Cómo arreglarlo

Unificá en oxmysql y encendé la capa de compatibilidad para los scripts viejos:

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

# sólo si todavía corrés scripts escritos para las APIs viejas
set oxmysql_slow_query_warning 200

Para un script que puedas editar, portá la llamada:

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

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

¿Sigues atascado en tu propio código?

Esta página es lo que suele significar este error. Pega tu consola en Server Fixer y ordenará todo lo que haya en ella y te dirá qué hacer primero; y si prefieres no tocarlo, ORBIE puede reparar el script y devolverte el recurso listo para soltar.

bug_reportAbrir el Server Fixer

Para este tipo de error, el Script Optimizer detecta los patrones de consulta que causan esto.

Errores que viajan con este