oxmysql について
oxmysql は、oxmysql の Lua または JavaScript APIを使った、FiveMリソースのサーバー側データベースコードを案内するスキルです。結果に応じたクエリ選択、位置パラメーター、トランザクション、mysql-async構文からの移行を扱います。
主な機能
- 01結果の形に応じたAPI選択
- 02位置指定SQLプレースホルダーの使用
- 03複数文トランザクションの案内
- 04プリペアド実行とraw実行の説明
- 05FiveMサーバー側設定の規定
活用シーン
- 01FiveMリソースでのデータベースクエリ作成
- 02mysql-asyncデータベースコードの移行
- 03複数文を原子的に実行する書き込み
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ germanfndez/ fiveai-skills --skill oxmysqlインストール後、Claude Code で/oxmysqlを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
rules/insert.mdplaceholders.mdprepare.mdquery.mdrawExecute.mdscalar.mdsingle.mdtransaction.mdupdate.md詳細
oxmysql
MySQL テーブルを通じた FiveM のサーバー側 MySQL/MariaDB アクセス機能です(mysql-async および ghmattimysql の代替)。
有効化の条件
ユーザーが FiveM リソース内のデータベースコードを記述または編集する場合に、このスキルを読み込みます。対象には SELECT/INSERT/UPDATE/DELETE、アップサート、トランザクション、MySQL.*、exports.oxmysql、mysql-async からの移行が含まれます。
厳守事項
- サーバー側専用です。他のサーバースクリプトより前に、
fxmanifest.luaにserver_script '@oxmysql/lib/MySQL.lua'を追加してください。 - mysql-async 互換レイヤーの
MySQL.Sync.*と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を使ってください。- 互換性を重視する場合は、MySQL 8 より MariaDB を優先してください。
判断基準
| 必要な結果 | 呼び出し | 戻り値 |
|---|---|---|
| 複数の行 | MySQL.query.await(sql, params) | 行の配列 |
| 1 行 | MySQL.single.await(sql, params) | 行または nil |
| 1 つの値(COUNT、1 列) | 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) | 生の結果 |
実行手順
- マニフェストの行を確認し、リソースより前に
oxmysqlが起動することを確かめます。 - 判断基準から、必要な結果の形式に合った関数を選びます。
- バッククォートで識別子を囲み、すべての値に
?を使って SQL を記述します。 - 複数の書き込みステートメントは
transactionで囲みます。 - 使用前に
nilの結果(single、scalar)を処理します。
出力条件
位置指定プレースホルダーを使い、mysql-async の構文を使用しない、実行可能なサーバー側 Lua(または JS)を返します。MySQL.<fn>.await を使用してください。
参考資料
- rules/placeholders.md —
?プレースホルダー、非推奨の@named。 - rules/query.md — MySQL.query:行、または insertId/affectedRows。
- rules/single.md — MySQL.single:1 行、または 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 対応