Oxmysql
Trigger: oxmysql, MySQL.query, MySQL.insert, MySQL.update, MySQL.single, MySQL.scalar, MySQL.prep…
by germanfndez · MIT
The skill
Trigger: oxmysql, MySQL.query, MySQL.insert, MySQL.update, MySQL.single, MySQL.scalar, MySQL.prepare, MySQL.transaction, rawExecute, SQL, database, mysql-async. Write server-side SQL with oxmysql.
oxmysql
Server-side MySQL/MariaDB access for FiveM through the MySQL table (replacement for mysql-async and ghmattimysql).
Activation Contract
Load this skill when the user writes or edits database code in a FiveM resource: SELECT/INSERT/UPDATE/DELETE, upserts, transactions, MySQL.*, exports.oxmysql, or migrating from mysql-async.
Hard Rules
- Server only. Add
server_script '@oxmysql/lib/MySQL.lua'tofxmanifest.luaabove other server scripts. MySQL.Sync.*andMySQL.Async.*(mysql-async compatibility layer) are NOT available. Replace them withMySQL.query,MySQL.scalar,MySQL.single,MySQL.insert,MySQL.update,MySQL.prepare,MySQL.transaction, each with a.awaitvariant.@namedplaceholders are deprecated: use positional?with an array of values.prepareaccepts only?(and??for column names).- Never concatenate user input into SQL; every value goes through a placeholder.
- Every function takes
(query, params, callback); use.awaitto yield instead of nesting callbacks. - Use
transactionwhen several writes must succeed or fail together; it rolls back on any failure. - Use
rawExecuteonly when the normalized result shape ofquery/prepareis insufficient. - Prefer MariaDB over MySQL 8 for compatibility.
Decision Gates
| Need | Call | Returns |
|---|---|---|
| Many rows | MySQL.query.await(sql, params) |
array of rows |
| One row | MySQL.single.await(sql, params) |
row or nil |
| One value (COUNT, one column) | MySQL.scalar.await(sql, params) |
value or nil |
| Insert | MySQL.insert.await(sql, params) |
insert id |
| Update / delete count | MySQL.update.await(sql, params) |
affected rows |
| Hot path, repeated statement | MySQL.prepare.await(sql, params) |
rows / value |
| Several statements atomically | MySQL.transaction.await({ { query, values }, ... }) |
success boolean |
| Raw, unnormalized result | MySQL.rawExecute.await(sql, params) |
raw result |
Execution Steps
- Confirm the manifest line and that
oxmysqlstarts before the resource. - Pick the function by result shape from Decision Gates.
- Write the SQL with backticked identifiers and
?for every value. - Wrap multi-statement writes in
transaction. - Handle nil results (
single,scalar) before use.
Output Contract
Return runnable server-side Lua (or JS) using MySQL.<fn>.await with positional placeholders and no mysql-async syntax.
References
- rules/placeholders.md —
?placeholders, deprecated@named. - rules/query.md — MySQL.query: rows or insertId/affectedRows.
- rules/single.md — MySQL.single: one row or nil.
- rules/scalar.md — MySQL.scalar: single value.
- rules/insert.md — MySQL.insert: returns insert id.
- rules/update.md — MySQL.update: returns affected rows.
- rules/prepare.md — MySQL.prepare: prepared statements.
- rules/transaction.md — MySQL.transaction: atomic multi-query.
- rules/rawExecute.md — MySQL.rawExecute: raw result.
Upstream docs: https://overextended.dev/oxmysql
Use this skill
Connect your agent to the Skill Store MCP server and ask for it by ref: germanfndez/oxmysql-29251694612.
Details
- Publisher
- germanfndez
- Category
- Data & Analytics › Databases & SQL
- License
- MIT
- Updated
- 2026-10-16
References
More from germanfndez
- Esx Framework Trigger: ESX, es_extended, xPlayer, PlayerData, ESX.GetPlayerFromId, ESX.RegisterServerCallback,…
- Fivem Basics Trigger: FiveM resource, fxmanifest, client/server script, RegisterNetEvent, TriggerServerEvent,…
- Fivem Deployment Trigger: server artifacts, FXServer, txAdmin, server.cfg, gamebuild, sv_enforceGameBuild, update…
- Fivem Nui Trigger: NUI, ui_page, SendNUIMessage, SetNUIFocus, RegisterNUICallback, HTML/CSS/JS for FiveM, F…