mcpField
O
oxmysql

oxmysql

github.com/germanfndez数据与数据库1978 次安装2 周前更新
代码仓库

关于 oxmysql

oxmysql 是指导 FiveM 资源编写服务端数据库代码的 Skill,使用 oxmysql 的 Lua 或 JavaScript API。内容涵盖按结果选择查询接口、位置占位符、事务及从 mysql-async 语法迁移。

主要功能

  1. 01按结果类型选择 API
  2. 02使用位置 SQL 占位符
  3. 03指导多语句原子事务
  4. 04涵盖预处理与原始执行
  5. 05规定 FiveM 服务端设置

适用场景

  1. 01在 FiveM 资源中编写数据库查询
  2. 02迁移 mysql-async 数据库代码
  3. 03实现原子化多语句写入

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/germanfndez/fiveai-skills --skill oxmysql

安装后在 Claude Code 中输入/oxmysql确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

rules/
insert.md
placeholders.md
prepare.md
query.md
rawExecute.md
scalar.md
single.md
transaction.md
update.md

详细介绍

oxmysql

通过 MySQL 表在 FiveM 中进行服务端 MySQL/MariaDB 访问(替代 mysql-async 和 ghmattimysql)。

激活条件

当用户在 FiveM 资源中编写或修改数据库代码时加载此技能:SELECT/INSERT/UPDATE/DELETE、upsert、事务、MySQL.*、exports.oxmysql,或从 mysql-async 迁移。

硬性规则

  • 仅限服务端。在 fxmanifest.lua 中,其他服务端脚本之前添加 server_script '@oxmysql/lib/MySQL.lua'。
  • MySQL.Sync.* 和 MySQL.Async.*(mysql-async 兼容层)不可用。请替换为 MySQL.query、MySQL.scalar、MySQL.single、MySQL.insert、MySQL.update、MySQL.prepare、MySQL.transaction,每个函数都有 .await 变体。
  • @named 占位符已弃用:请使用带值数组的位置占位符 ?。prepare 仅接受 ?(以及用于列名的 ??)。
  • 切勿将用户输入拼接到 SQL 中;所有值都必须通过占位符传入。
  • 每个函数都接受 (query, params, callback);使用 .await 挂起执行,而不是嵌套回调。
  • 当多个写入操作必须同时成功或失败时,使用 transaction;任何操作失败都会回滚。
  • 仅当 query/prepare 规范化后的结果格式不满足需求时,才使用 rawExecute。
  • 为保证兼容性,优先使用 MariaDB 而非 MySQL 8。

决策指南

需求调用返回值
多行MySQL.query.await(sql, params)行数组
单行MySQL.single.await(sql, params)行或 nil
单个值(COUNT、单列)MySQL.scalar.await(sql, params)值或 nil
插入MySQL.insert.await(sql, params)插入 ID
更新 / 删除计数MySQL.update.await(sql, params)受影响的行数
热路径、重复执行的语句MySQL.prepare.await(sql, params)行 / 值
多条语句原子执行MySQL.transaction.await({ { query, values }, ... })成功布尔值
原始、未规范化的结果MySQL.rawExecute.await(sql, params)原始结果

执行步骤

  1. 确认清单文件中有对应行,并且 oxmysql 在该资源之前启动。
  2. 根据决策指南中的结果格式选择函数。
  3. 使用反引号括起标识符,并为每个值使用 ? 编写 SQL。
  4. 将多条语句的写入操作放入 transaction 中。
  5. 使用前处理 nil 结果(single、scalar)。

输出约定

返回可运行的服务端 Lua(或 JS),使用 MySQL.<fn>.await 和位置占位符,不使用 mysql-async 语法。

参考资料

  • rules/placeholders.md — ? 占位符、已弃用的 @named。
  • rules/query.md — MySQL.query:行或 insertId/affectedRows。
  • rules/single.md — MySQL.single:单行或 nil。
  • rules/scalar.md — MySQL.scalar:单个值。
  • rules/insert.md — MySQL.insert:返回插入 ID。
  • rules/update.md — MySQL.update:返回受影响的行数。
  • rules/prepare.md — MySQL.prepare:预处理语句。
  • rules/transaction.md — MySQL.transaction:原子执行多条查询。
  • rules/rawExecute.md — MySQL.rawExecute:原始结果。

上游文档:https://overextended.dev/oxmysql

评论

支持 Markdown