oxmysql para FiveM: o que é, erros comuns e a skill de IA

Ver no skills.sh

Atualizado em

Não quer gerenciar as skills por conta própria? Obtenha o app completo.

O oxmysql é o driver de MySQL e MariaDB que a maioria dos servidores FiveM usa. Você chama MySQL.query, insert, prepare, single e transaction com placeholders em vez de concatenar texto. Este guia cobre a configuração, os erros que quebram scripts e a skill de IA.

oxmysql é a biblioteca de banco de dados para FiveM que substituiu o mysql-async e o ghmattimysql. Roda apenas no servidor, conversa com MySQL ou MariaDB e expõe uma API Lua pequena no global MySQL. Se o seu recurso guarda qualquer coisa (dados de jogador, veículos, inventários, logs), esta é a camada contra a qual você escreve. O SKILL.md recomenda MariaDB em vez de MySQL 8 por compatibilidade.

Referência rápida

Em Lua, adicione .await para receber o resultado direto, ou passe um callback como último argumento. Os parâmetros sempre vão com placeholders ?.

Chamada Retorna
MySQL.query.await(sql, params) Linhas em um SELECT; nos outros casos insertId ou affectedRows
MySQL.single.await(sql, params) Uma linha, ou nil
MySQL.scalar.await(sql, params) Um valor de uma coluna de uma linha
MySQL.insert.await(sql, params) O novo id inserido
MySQL.update.await(sql, params) O número de linhas afetadas
MySQL.prepare.await(sql, params) Statement preparado, só com placeholders ?
MySQL.transaction.await(queries) Várias consultas que são aplicadas ou falham juntas

Linha do manifest, acima dos seus outros scripts de servidor: server_script '@oxmysql/lib/MySQL.lua'. Só no lado do servidor.

O que o oxmysql oferece

O setup é uma linha no fxmanifest.lua, colocada antes dos outros scripts de servidor: server_script '@oxmysql/lib/MySQL.lua'. A partir daí, a tabela MySQL fica disponível em todos os scripts de servidor do recurso.

  • MySQL.query e MySQL.query.await: executam qualquer instrução. Um SELECT retorna linhas; as demais retornam insertId ou affectedRows.
  • MySQL.insert: insere uma linha e retorna o novo insert id.
  • MySQL.update: atualiza linhas e retorna o número de linhas afetadas.
  • MySQL.single: uma linha ou nil, a chamada certa para "carregue este jogador".
  • MySQL.scalar: um valor de uma linha e uma coluna, para contagens e saldos.
  • MySQL.prepare: instruções preparadas apenas com placeholders ?, mais rápidas quando você repete a mesma consulta muitas vezes.
  • MySQL.rawExecute: execução crua sem formato de resultado automático.
  • MySQL.transaction: várias consultas que são aplicadas ou falham juntas.

Todas as funções recebem parâmetros por placeholders ?. Os valores nunca entram na string SQL. A referência está em coxdocs.dev/oxmysql.

Erros comuns com oxmysql

  • Usar a API do mysql-async. MySQL.Sync.fetchAll e MySQL.Async.execute vêm de uma biblioteca que não é mais mantida. Em código novo, falham ou dependem de uma camada de compatibilidade que você não controla. Use MySQL.query.await, MySQL.insert e o resto da API do oxmysql.
  • Chamar MySQL de um script de cliente. A biblioteca é só de servidor. O cliente não tem acesso ao banco nem ao global MySQL. Coloque a consulta em um script de servidor e entregue o resultado ao cliente por evento ou callback.
  • Concatenar valores no SQL. 'SELECT * FROM users WHERE identifier = "' .. identifier .. '"' é uma injeção esperando para acontecer. Escreva MySQL.single.await('SELECT * FROM users WHERE identifier = ?', { identifier }).
  • Esperar uma consulta por linha dentro de um loop. Salvar 300 veículos com MySQL.update.await dentro de um for são 300 idas ao banco. Agrupe o trabalho em uma única instrução quando puder, ou envolva o conjunto em MySQL.transaction.
  • Esquecer a linha da lib no manifest. O sintoma é "attempt to index a nil value (global 'MySQL')" na primeira consulta. Adicione server_script '@oxmysql/lib/MySQL.lua' antes dos outros scripts de servidor.

Por que assistentes de IA erram com oxmysql

Assistentes genéricos leram uma década de scripts FiveM, e a maioria usa mysql-async. Peça "salvar o dinheiro do jogador" e você recebe MySQL.Async.execute com o valor concatenado na string, às vezes dentro de um arquivo de cliente. Não roda em lugar nenhum, ou pior, roda e deixa o servidor aberto a injeções.

A skill do oxmysql dá ao assistente um arquivo de regras por função: placeholders.md, query.md, insert.md, prepare.md, update.md, single.md, scalar.md, rawExecute.md e transaction.md. Cada um indica o que a função retorna e como os parâmetros são passados. O assistente lê a regra que corresponde ao seu pedido e escreve código que usa a API real do lado certo da rede.

Para ver como uma skill se compara a outras configurações de IA para FiveM, leia nosso comparativo.

Instale a skill do oxmysql em 30 segundos

  1. Clique em "Download SKILL.md" no topo desta página.
  2. Descompacte na pasta de skills ou rules da sua ferramenta de IA. A seção de instalação abaixo mostra o caminho exato para Claude Code, Cursor e VS Code.
  3. Peça ao assistente algo concreto, como "carregue o saldo bancário de um jogador pelo identifier", e confira se ele usa MySQL.scalar.await com um placeholder ? em um script de servidor.

Como instalar esta skill

Baixe o zip, descompacte e coloque a pasta onde a sua ferramenta carrega skills ou regras. O caminho exato depende da ferramenta:

Claude Code

Descompacte em .claude/skills/oxmysql/ dentro do projeto (a pasta precisa conter SKILL.md). Para todos os projetos, use ~/.claude/skills/oxmysql/.

Documentação de skills do Claude Code

Cursor

O Cursor carrega as regras do projeto de .cursor/rules/. Adicione ali um arquivo de regra apontando para a skill descompactada, ou cole o conteúdo do SKILL.md e dos arquivos de regras em uma regra. O formato é .mdc com frontmatter e muda entre versões, então confira a documentação da sua versão.

Documentação de regras do Cursor

VS Code / Copilot

O Copilot lê arquivos de instruções em .github/instructions/*.instructions.md. Copie o SKILL.md para lá com um glob applyTo para os seus arquivos Lua e mantenha os arquivos de regras ao lado.

Documentação de instruções do VS Code

O arquivo SKILL.md

Este é o arquivo que o seu assistente de IA lê. Ele aponta para os arquivos de regras incluídos no download.

Conteúdo da skill (inclui SKILL.md e quaisquer outros arquivos)

O conteúdo da skill está em inglês: é documentação técnica feita para agentes de IA.

OxMySQL

SQL integration for FiveM using OxMySQL (replacement for mysql-async / ghmattimysql). Server-side only. Use MariaDB over MySQL 8 for compatibility.

When to use

  • User asks for database queries, inserts, updates, or SQL in a FiveM resource.
  • Editing or writing code that uses MySQL.* or exports.oxmysql.
  • Designing tables, upserts, or transactions.

Setup

  • Lua: server_script '@oxmysql/lib/MySQL.lua' in fxmanifest (above other scripts).

Rules

Read the rule that matches what you're doing:

  • rules/placeholders.md — Safe parameters (? placeholders), avoid SQL injection.
  • rules/query.md — MySQL.query / MySQL.query.await: SELECT returns rows; other statements return insertId/affectedRows.
  • rules/insert.md — MySQL.insert: insert row, returns insert id.
  • rules/prepare.md — MySQL.prepare: prepared statements, only ? placeholders; faster for repeated queries.
  • rules/update.md — MySQL.update: update rows, returns affected count.
  • rules/single.md — MySQL.single: one row or nil.
  • rules/scalar.md — MySQL.scalar: single value (one row, one column).
  • rules/rawExecute.md — MySQL.rawExecute: raw execution, no automatic result shape.
  • rules/transaction.md — MySQL.transaction: run multiple queries in a transaction.

References (look up if not covered in the rules above)

If something isn't covered in the rules above, check the official docs:

Perguntas frequentes

O oxmysql é gratuito?
Sim. O oxmysql é open source, mantido pelas equipes Overextended e CommunityOx e publicado no GitHub. Você pode rodar em qualquer servidor sem custo.
O oxmysql funciona com ESX e QBCore?
Sim. As builds atuais do ESX Legacy e do QBCore já vêm com oxmysql como camada de banco de dados, então qualquer script que você escreva para esses frameworks pode usar MySQL.query, MySQL.insert e o resto da API.
Posso usar esta skill com o ChatGPT?
Sim, com um passo manual. O SKILL.md é markdown puro, então você pode colar na conversa como contexto. O suporte nativo a skills é para Claude Code, Cursor e VS Code.

Leituras mais longas do blog da FiveAI sobre o mesmo tema.

Mais skills