OxMySQL

Uma substituição para mysql-async e ghmattimysql com API expandida e compatibilidade aprimorada para MySQL 8.

MySQL ou MariaDB?

A maioria dos recursos para FiveM foi projetada para ser usada com MySQL 5.7 e pode enfrentar problemas de compatibilidade ao usar MySQL 8, por exemplo:

  • Mais palavras reservadas, como 'stored' e 'group'.
  • Campos Longtext / JSON não suportam valores padrão.

MariaDB (opens in a new tab) é altamente recomendada por sua compatibilidade e desempenho aprimorado (em relação a todas as versões do MySQL).

Devo usar o XAMPP?

Não. XAMPP é uma pilha de servidor web destinada a desenvolvimento, permitindo fácil desenvolvimento e teste locais. Não instale o XAMPP apenas para rodar seu banco de dados, e instale MariaDB (opens in a new tab) diretamente.

Instalação

Baixe e instale MariaDB (opens in a new tab)

Baixe a última versão (opens in a new tab) do oxmysql

Configure seu servidor

# Use seu formato preferido. Certifique-se de sempre usar set.
set mysql_connection_string "mysql://root:12345@localhost:3306/fivem"
set mysql_connection_string "user=root;password=12345;host=localhost;port=3306;database=fivem"

Certos caracteres especiais são reservados ou não são suportados dependendo da sua string de conexão. Evite usar estes caracteres ; , / ? : @ & = + $ # e tente trocar o formato da string de conexão.

Avisos de consulta lenta

Você receberá avisos se uma consulta demorar muito para ser concluída, configurável com uma variável de ambiente.

  • O tempo de consulta pode não ser totalmente preciso.
  • Consultas lentas podem não indicar um problema de banco de dados (ex.: travamentos do servidor).
  • Consultas lentas na inicialização do servidor não são necessariamente problemáticas.
set mysql_slow_query_warning 150

Debug

Habilitar a opção de debug imprimirá todas as consultas no console do servidor; você também pode usar uma lista para imprimir apenas de recursos específicos.

set mysql_debug true
set mysql_debug [
  "ox_core",
  "ox_inventory"
]

Você pode modificar temporariamente a lista de recursos com comandos.

oxmysql_debug remove ox_core
oxmysql_debug add ox_core

Compatibilidade

Você pode deletar os seguintes recursos e permitir que oxmysql forneça sua funcionalidade.

  • mysql-async
  • ghmattimysql

Uso

Os recursos podem importar métodos oxmysql incluindo nossa biblioteca, fornecendo alguns recursos de verificação de tipos e pequenas melhorias de desempenho sobre chamadas de exportação diretas.

Lua

Modifique fxmanifest.lua para o seu recurso e adicione o seguinte acima de qualquer outro arquivo de script.

server_script '@oxmysql/lib/MySQL.lua'

JavaScript

Você pode usar exportações diretas ou instalar nosso pacote npm (opens in a new tab) para intellisense e uso semelhante ao Lua.

# With pnpm
pnpm add @overextended/oxmysql
 
# With Yarn
yarn add @overextended/oxmysql
 
# With npm
npm install @overextended/oxmysql

Importe o objeto oxmysql para o seu recurso.

import { oxmysql as MySQL } from '@overextended/oxmysql';

Upserting

Quando não tiver certeza se uma linha deve ser inserida no banco de dados ou se uma linha existente deve ser atualizada, as consultas devem verificar a duplicidade de chaves.

MySQL.prepare('INSERT INTO ox_inventory (owner, name, data) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE data = VALUES(data)', { owner, dbId, inventory })

Isso é preferível a verificar a existência de uma linha e, em seguida, inserir ou atualizar dependendo do resultado. Além disso, ao contrário do uso de 'REPLACE INTO', a linha não é deletada e reinserida.