Falló la conexión a la base de datos (oxmysql / mysql-async)
Tu servidor no llega a su base de datos. Nada que guarde o cargue va a funcionar hasta que esto se arregle.
Haz esto primero
Comprueba que la base de datos esté corriendo y que la línea de conexión de server.cfg tenga el usuario y la contraseña correctos.
Qué significa
La capa de base de datos no pudo llegar a MySQL, o llegó y la rechazaron. Cada consulta de cada recurso va a fallar hasta que esto se arregle, así que una pared de errores de base de datos sin relación debajo de este es esperable y todavía no vale la pena leerla.
El código de error de node te dice cuál de las dos mitades falló:
• ECONNREFUSED — llegó al equipo, no había nada escuchando en ese puerto
• ETIMEDOUT — no llegó al equipo en absoluto (cortafuegos, IP equivocada)
• ENOTFOUND / getaddrinfo — el nombre del equipo no resuelve
• ER_ACCESS_DENIED_ERROR — llegó a MySQL, usuario o contraseña equivocados
• ER_BAD_DB_ERROR — conectó, pero esa base de datos no existe
Qué lo provoca
Ordenado por la frecuencia con la que es la respuesta.
- 1
MySQL no está corriendo
Lo más común en una máquina local después de reiniciar, o en un equipo nuevo donde el servicio nunca se habilitó.
- 2
La cadena de conexión está mal o mal formada
set mysql_connection_stringtiene que ser una sola línea, en server.cfg, antes de los recursos que la usan. Los dos formatos funcionan, pero el de punto y coma no perdona los espacios:set mysql_connection_string "mysql://user:password@localhost/database?charset=utf8mb4"
- 3
Una contraseña con caracteres especiales sin escapar
@,:,/y#dentro de una contraseña rompen la forma de URI. Codificalos en porcentaje o usá la forma de clave/valor. - 4
El usuario no tiene permisos desde este equipo
Los permisos de MySQL son por equipo. Un usuario creado como
user@localhostno puede conectarse desde otra máquina ni con la contraseña correcta. - 5
La base de datos todavía no existe
La conexión sale bien y el USE falla. El SQL del framework nunca se importó.
Cómo saber cuál es el tuyo
Leé el código, no la frase. Después probá conectarte con las mismas credenciales desde la misma máquina:
mysql -h 127.0.0.1 -u tuusuario -p tubasededatos
Si eso también falla, el problema es MySQL y no FiveM. Ojo con que localhost y 127.0.0.1 no son intercambiables en los permisos de MySQL.
Dónde mirar
server.cfg, la línea de set mysql_connection_string, y si se hace ensure de oxmysql antes de cualquier cosa que consulte.
Cómo arreglarlo
# server.cfg — antes de cada recurso que toque la base de datos set mysql_connection_string "mysql://fivem:pass@127.0.0.1/fivem?charset=utf8mb4" ensure oxmysql
Dale permisos al usuario como corresponde si es remoto:
CREATE USER 'fivem'@'%' IDENTIFIED BY 'pass'; GRANT ALL PRIVILEGES ON fivem.* TO 'fivem'@'%'; FLUSH PRIVILEGES;
¿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 FixerPara este tipo de error, el Script Optimizer detecta los patrones de consulta que causan esto.