オックスMySQL
拡張 API と MySQL 8 との互換性が向上した、mysql-async と ghmattimysql の代替品です。
MySQL か MariaDB か?
FiveM のほとんどのリソースは MySQL 5.7 で使用するように設計されており、MySQL 8 を使用すると互換性の問題が発生する可能性があります。
- 「stored」や「group」などの予約キーワードが増えました。
- ロングテキスト/JSON フィールドはデフォルト値をサポートしていません。
MariaDB 互換性とパフォーマンスの向上 (MySQL のすべてのバージョンにわたって) のために、強く推奨されます。
XAMPP を使うべきでしょうか?
いいえ。XAMPPはウェブサーバースタック開発に使用することを目的としており、ローカルでの開発とテストが容易になります。
データベースを実行するためだけにXAMPPをセットアップしないでください。MariaDB 代わりに直接。
インストール
ダウンロードしてインストールするMariaDB
ダウンロード最新リリース oxmysqlの
サーバーを構成する
- サーバーを開く設定ファイル 。
- 追加
start oxmysqlリソース リストの一番上に追加します。 - リソースを開始する前に、mysql 接続 string を構成して設定します。
# Use your preferred format. Make sure you only ever use 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"接続 string
によっては、特定の特殊文字が予約されているかサポートされていない場合があります。
これらの文字の使用は避けてください; , / ? : @ & = + $ #、接続を
string 形式に交換してみてください。
低速クエリの警告
クエリの完了に長い時間がかかった場合は警告が表示されます。これは convar で設定できます。
- クエリ時間は完全に正確ではない可能性があります。
- クエリが遅い場合、必ずしもデータベースの問題 (サーバーのヒッチなど) を示しているとは限りません。
- サーバーの起動時にクエリが遅いことは必ずしも問題ではありません。
set mysql_slow_query_warning 150デバッグ
デバッグ オプションを有効にすると、すべてのクエリがサーバー コンソールに出力されます。代わりに、array を使用してリソースのリストからのみ出力することもできます。
set mysql_debug true
set mysql_debug [
"ox_core",
"ox_inventory"
]コマンドを使用してリソース リストを一時的に変更できます。
oxmysql_debug remove ox_core
oxmysql_debug add ox_core互換性
以下のリソースを削除して、oxmysql がその機能を提供できるようにすることができます。
- MySQL非同期
- ghmattimysql
使用法
リソースは、ライブラリを組み込むことで oxmysql メソッドをインポートでき、生のエクスポート呼び出しに比べていくつかの型チェックと若干のパフォーマンス向上が実現します。
二
修正する fxmanifest.luaリソース用に、他のスクリプト ファイルの上に次のコードを追加します。
server_script '@oxmysql/lib/MySQL.lua'JavaScript
生のエクスポートを使用するか、インストールすることができますnpmパッケージ インテリセンスおよび Lua と同様の使用法。
# With pnpm
pnpm add @communityox/oxmysql
# With Yarn
yarn add @communityox/oxmysql
# With npm
npm install @communityox/oxmysqloxmysql オブジェクトをリソースにインポートします。
import { oxmysql as MySQL } from '@communityox/oxmysql';アップサート
行をデータベースに挿入する必要があるか、既存の行を更新する必要があるか不明な場合は、クエリで重複キーをチェックする必要があります。
MySQL.prepare('INSERT INTO ox_inventory (owner, name, data) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE data = VALUES(data)', { owner, dbId, inventory })これは、行の存在を確認し、結果に応じて挿入または更新するよりも優先されます。
さらに、「REPLACE INTO」を使用する場合とは異なり、行は削除されず、再挿入されません。