ai-mysql
O motor de banco de dados para scripts de terceiros. Substitui o oxmysql, o mysql-async e o ghmattimysql.
O ai-mysql conecta scripts de terceiros ao seu banco de dados. Ele responde aos exports do oxmysql e ao arquivo @oxmysql/lib/MySQL.lua dele, mais os nomes antigos do mysql-async e do ghmattimysql, então scripts escritos para qualquer um deles rodam sem alterações.
Os scripts ai-* não passam pelo ai-mysql: cada um roda o motor de banco de dados do AI Core (@aicore-fivem/mysql) dentro de si, com seu próprio pequeno pool de conexões. O ai-mysql é o mesmo motor, compartilhado por todos os scripts de terceiros.
O que ele faz
- oxmysql para outros scripts.
exports.oxmysql:query(...),MySQL.query.await(...)e toda outra chamada do oxmysql funcionam. - APIs antigas. Os nomes de exports do mysql-async (
mysql_fetch_all,mysql_execute...) e do ghmattimysql (execute,scalar...) também respondem. - Verificação de versão. Scripts que leem a versão do oxmysql veem 2.14.3, a versão do oxmysql que o ai-mysql segue, então eles usam o caminho de código moderno.
- Avisos para consultas lentas e resultados muito grandes no console do servidor, como o oxmysql.
Instalação
A receita do txAdmin do AI Core o instala. À mão:
Coloque-o no lugar
Coloque a pasta em resources/[ai]/ e adicione ensure ai-mysql ao server.cfg antes de ensure ai-core e antes de qualquer script que use o banco de dados.
Defina a conexão
No env.cfg, defina a string de conexão e deixe o ai-mysql (e todo script ai-* que usa o banco de dados) lê-la:
set mysql_connection_string "mysql://user:password@localhost/ai_core?charset=utf8mb4"
add_convar_permission ai-mysql read mysql_connection_string
add_convar_permission ai-core read mysql_connection_stringO env.cfg da receita já tem a linha para todo script ai-* que precisa dela.
Remova o oxmysql
Não instale o oxmysql, o mysql-async ou o ghmattimysql junto com ele. Scripts com dependency 'oxmysql' no manifest iniciam normalmente: o ai-mysql conta como oxmysql.
Configurações do painel
Nenhuma. O ai-mysql é configurado com convars, os mesmos que o oxmysql lê, então um server.cfg existente continua funcionando:
| Convar | O que muda | Padrão |
|---|---|---|
mysql_connection_string | Onde fica o banco de dados: mysql://user:password@host:port/database?options ou a forma key=value; (server=...;database=...;userid=...;password=...). | mysql://root@localhost |
mysql_slow_query_warning | Consultas mais lentas que esta quantidade de milissegundos geram aviso no console. | 200 |
mysql_resultset_warning | Resultados com mais linhas que isso geram aviso no console. | 1000 |
mysql_transaction_isolation_level | 1 REPEATABLE READ, 2 READ COMMITTED, 3 READ UNCOMMITTED, 4 SERIALIZABLE. | 2 |
ai_mysql_shared_pool_size | Conexões que o ai-mysql mantém para todos os scripts de terceiros juntos. | 10 |
ai_mysql_pool_size | Conexões que cada script ai-* mantém para si. | 5 |
Comandos
Nenhum. O comando de administração aicore_db [slow] do AI Core imprime as estatísticas do banco de dados de cada recurso no console do servidor (veja ai-core).
Teclas
Nenhum.
Funciona com outros scripts
- Substitui o
oxmysql, omysql-asynce oghmattimysql(provide).@oxmysql/lib/MySQL.luaaponta para a cópia do ai-mysql. - Scripts de ox_lib, QBCore, Qbox e ESX que usam o oxmysql rodam nele.
Limites conhecidos
- O comportamento segue o oxmysql 2.14.3. Um script que precisa de um recurso de um oxmysql mais novo pode não encontrá-lo.