データストアに行うクエリーは、接続性が悪いなどの理由で失敗する可能性があります。エラーコードでエラーを処理し、データストア関数を pcall() でラップすることで、エラーを処理し、メッセージをエラーコードで返すことができます。
エラーコード参照
エラーコード | エラー名 | エラーメッセージ | 注意 | |
---|---|---|---|---|
101 | KeyNameEmpty | キー名は空にすることはできません。 | データストア関数にキーを入力しているかどうかをチェックします。 | |
102 | KeyNameLimit | キー名が50文字以上の制限を超えています。 | データストア関数にキーを入力しているかどうかをチェックします。 | |
103 | ValueNotAllowed | X を DataStore で許可できません。 | 悪い更新機能は、タイプ X の値を返しました。 | |
104 | CantStoreValue | X を DataStore に保存できません。 | アップデート機能は、型の値を X で返しましたが、サーバーには同期されませんでした。 | |
105 | ValueTooLarge | シリアル値は X 制限を超えます。 | Class.GlobalDataStore:SetAsync()|SetAsync() または UpdateAsync() で値を設定している場合、値のシリアル長は X を超えることはできません。データのシリアル長を確認するには、1>Class.HttpService:JSONEncode()|JSONEncode()1> を | |
106 | MaxValueInvalid | MaxValue は整数でなければなりません。 | Class.OrderedDataStore:GetSortedAsync()|GetSortedAsync() の OrderedDataStore に最大値を与えている場合、それは整数でなければなりません。 | |
106 | MinValueInvalid | MinValue は整数でなければなりません。 | Class.OrderedDataStore:GetSortedAsync()|GetSortedAsync() のミニマム値を OrderedDataStore のために渡している場合、それは整数でなければなりません。 | |
106 | PageSizeGreater | PageSize は、プリディファインされた範囲内になければなりません。 | Class.OrderedDataStore の最小ページサイズは 1 です。 | |
106 | PageSizeLesser | PageSize は、プリディファインされた範囲内になければなりません。 | Class.OrderedDataStore の最大ページサイズは 100 です。 | |
107 | MinMaxOrderInvalid | MaxValue は、MinValue より大きい必要があります。 | 最大値は、GetSortedAsync() の最小値より大きい必要があります。 | |
301 | GetAsyncThrottle | GetAsync リクエストがドロップされました。リクエストは軽減されましたが、キューがいっぱいでした。 | GetAsync() リクエストは、最大のキューサイズを超えています。Roblox は、現在のスループットでリクエストを処理できません。 | |
302 | SetAsyncThrottle | SetAsync リクエストがドロップされました。リクエストは迷子しましたが、キューは満タンでした。 | SetAsync() リクエストは、最大のキューサイズを超えています。Roblox は、現在のスループットでリクエストを処理できません。 | |
303 | IncreAsyncThrottle | IncrementAsync リクエストがドロップされました。リクエストは軽減されましたが、キューがいっぱいでした。 | IncrementAsync() リクエストは、最大のキューサイズを超えています。Roblox は、現在の通信速度でリクエストを処理できません。 | |
304 | UpdateAsyncThrottle | UpdateAsync リクエストがドロップされました。リクエストは軽減されましたが、キューがいっぱいでした。 | UpdateAsync() リクエストは、最大のキューサイズを超えています。Roblox は、現在のスループットでリクエストを処理できません。 | |
304 | TransformThrottle | UpdateAsync リクエストがドロップされました。リクエストは軽減されましたが、キューがいっぱいでした。 | UpdateAsync() リクエストは、最大のキューサイズを超えています。Roblox は、現在のスループットでリクエストを処理できません。 | |
305 | GetSortedThrottle | GetSorted リクエストがドロップされました。リクエストは軽減されましたが、キューがいっぱいでした。 | GetSortedAsync() リクエストは、最大のキューサイズを超えています。Roblox は、現在のスループットでリクエストを処理できません。 | |
306 | RemoveAsyncThrottle | RemoveAsync リクエストがドロップされました。リクエストは迷子しましたが、キューは満タンでした。 | RemoveAsync() リクエストは、最大のキューサイズを超えており、Roblox は、現在のスループットでリクエストを処理できません。 | |
401 | DataModelNoAccess | リクエストに失敗しました。DataModel は、エクスペリエンスがシャットダウンするとアクセスできなくなります。 | DataModel はエクスペリエンスがシャットダウンするため、初期化されていません。 | |
402 | LuaWebSrvsNoAccess | リクエストが失敗しました。 LuaWebService は、エクスペリエンスがシャットダウンするとアクセス不可になります。 | LuaWebService は、エクスペリエンスがシャットダウンするため、初期化されていません。 | |
403 | StudioAccessToApisNotAllowed | API アクセスが有効になっていないため、Studio から DataStore に書き込むことはできません。 | データストアを Studio で使用するには、API アクセスが有効でなければなりません。 | |
404 | InternalError | OrderedDataStore は存在しません。 | このリクエストに関連する OrderedDataStore は見つかりませんでした。これはデータの破損の可能性の 1つの可能性です。後でもう一度試してください。 | |
501 | InternalError | データが壊れているため、レポートを解析できません。 | サーバーはリクエストに対する応答を解析できませんでした。これはデータ破損の可能性の 1つのサインかもしれません。後でもう一度試してください。 | |
502 | RequestRejected | API サービスはエラーでリクエストを拒否しました X。 | Roblox サーバーで処理中にエラー X が発生しました。後でもう一度試してください。 | |
503 | InternalError | データストアリクエストが成功しましたが、キーが見つかりませんでした。 | 要求されたキーはデータストアに見つかりませんでした。これはデータ破損の可能性の 1つかもしれません。後でもう一度試してください。 | |
504 | InternalError | データストアリクエストに成功しましたが、応答は正しく形式化されていません。 | サーバーはリクエストに対する応答を解析できませんでした。これはデータ破損の可能性の 1つのサインかもしれません。後でもう一度試してください。 | |
505 | InternalError | OrderedDataStore リクエストは成功しましたが、応答は正しく形式化されていませんでした。 | サーバーは、OrderedDataStore リクエストに対する応答をパラスできませんでした。これはデータ破損の可能性の 1つのサインかもしれません。後でお試しください。 | |
509 | OperationNotAllowed | 個人 RCC で実行中にデータストアオペレーションがブロックされ、可能なデータ破損を防止します。 | データストアの書き込みは、プライベートの RCC チャンネルでブロックされます。 | |
511 | AttributeSizeTooLarge | メタデータ属性サイズは X 制限を超えます。 | シリアルメタデータサイズは X の制限を超えます。値 X はダイナミックです。サイズが変更されると、値も変更されます。 | |
512 | UserIdLimitExceeded | UserID サイズは X 制限を超えています。 | ユーザーが提供するユーザーIDの長さは、X の制限を超えます。 | |
513 | AttributeFormatError | 属性 userId 形式は無効です。 | 提供されたユーザーID は数字ではありません。 | |
513 | AttributeFormatError | 属性メタデータフォーマットは無効です。 | メタデータはテーブルではありません。 | |
GetVersionAsyncThrottle | GetVersionAsync リクエストがドロップされました。リクエストがスローされました。 | GetVersionAsync() リクエストは、最大のキューサイズを超えています。Roblox は、現在の通信速度でリクエストを処理できません。 | ||
ListDataStoresAsyncThrottle | ListDataStoresAsync リクエストがドロップされました。リクエストがスローされました。 | ListDataStoresAsync() リクエストは、最大のキューサイズを超えており、Roblox は、現在の通信速度でリクエストを処理できません。 | ||
ListKeysAsyncThrottle | ListKeysAsync リクエストがドロップされました。リクエストがスローされました。 | ListKeysAsync() リクエストは、最大のキューサイズを超えています。Roblox は、現在の通信量でリクエストを処理できません。 | ||
ListVersionsAsyncThrottle | ListVersionsAsync リクエストがドロップされました。リクエストがスローされました。 | ListVersionsAsync() リクエストは、最大のキューサイズを超えています。Roblox は、現在の通信量でリクエストを処理できません。 | ||
RemoveVersionAsyncThrottle | RemoveVersionAsync リクエストがドロップされました。リクエストがスローされました。 | RemoveVersionAsync() リクエストは、最大のキューサイズを超えています。Roblox は、現在のスループットでリクエストを処理できません。 |
サーバーエラーコード
エラー名 | エラーメッセージ | 注意 |
---|---|---|
DatastoreThrottled | リクエストレートは datastore の許可された最大値を超えています。 | 1つのデータストアに多くのリクエストが送信されました。 |
InternalServerError | 内部サーバーエラーが発生しました。 | Roblox サーバーで時々エラーが発生します。再試行してください。通常は経験値に基づいてバックオフします。 |
InvalidPlace | 提供された場所は無効です。 | 場所に対応するユニバースIDがありません。後でもう一度試してください。 |
InvalidTarget | 提供されたターゲットは無効です。 | 注文されたデータストアのキー名は 50 文字以上の制限を超えています。 |
InvalidUniverse | 提供された宇宙は無効です。 | 宇宙のための Place ID が一致しません。後でもう一度試してください。 |
InvalidUserIds | 提供されたユーザーID は形式が無効です。 | ユーザーID を解析できませんでした。 |
KeyThrottled | リクエストレートは、キーの許可された最大値を超えています。 | リクエストレートは、1つのキーに対する最大許可されたリクエストレートを超えています。 |
KeyNotFound | リクエストされたキーは存在しません。 | キーは存在しません。 |
N/A | 先に進むページがありません。 | このエラーは、最後のページで Pages:AdvanceToNextPageAsync() を呼び出すと発生します。 |
制限
データモデルには 制限 があります。エクスペリエンスがこれらの制限を超えると、サービスは自動的にエクスペリエンスのデータストア使用量を制限し、将来のリクエストを次のキューの 1 つに配置します:
- セット
- オーダーされ設定するセット
- 取得する
- オーダー済みの取得
キューにあるリクエストは、受信された順序で処理されます。呼び出される関数は、リクエストがまだキューにある間、続けて生成されます。データストアのキーが制限されている場合は、リクエストはキューに入れられますが、一時的にスキップされます。
各キューには 30 個のリクエストの制限があります。キューの上限に到達すると、301-306の範囲内のエラーコードでリクエストが失敗し、リクエストが完全にドロップされることを示すエラーコードが表示されます。
サーバーの制限
各サーバーには、リクエストタイプとユーザー数に基づいてデータストアリクエストをすることができます。 GetRequestBudgetForRequestType() を使用して、現在の場所が行うことができるデータストアリクエストの数を確認します。
リクエストタイプ | 機能 | 分あたりのリクエスト |
---|---|---|
取得する | GetAsync() | 60 + numPlayers × 10 |
設定 (リストされた関数のすべてに制限を設定します) | SetAsync() IncrementAsync() UpdateAsync() 0> Class.GlobalDataStore:RemoveAsync()|RemoveAsync()0> | 60 + numPlayers × 10 |
ソートする | GetSortedAsync() | 5 + numPlayers × 2 |
バージョンを取得する | GetVersionAsync() | 5 + numPlayers × 2 |
リスト | Class.DataStoreService:ListDataStoresAsync()|ListDataStoresAsync()``Class.DataStore:ListKeysAsync()|ListKeysAsync()``Class.DataStore:ListVersionsAsync()|ListVersionAsync() | 5 + numPlayers × 2 |
削除する | RemoveVersionAsync() | 5 + numPlayers × 2 |
データの制限
データストアは、エントリごとに使用できるデータの量を制限します。
データストア名、キー名、および スコープ は、すべて特定の文字列の長さでなければなりません。Use string.len() を使用して、長さを確認します。
データ (キーバリュー) は、最初のタイプにかかわらず、文字列としても保存されます。JSONEncode() 機能を使用して、Lua データをJSON テーブルに変換できます。
コンポーネント | 最大 文字数 |
---|---|
データストア名 | 50 |
キー名 | 50 |
スコープ | 50 |
データ (キーバリュー) | 4,194,304 キーあたり |
メタデータ限定
ユーザー定義メタデータにおける文字数の制限。
コンポーネント | 最大 文字数 |
---|---|
キー名 | 50 |
値 | 250 |
キーバリューペア | 300 |
スループットの制限
通常、Roblox サーバーでは、パフォーマンスが最高の状態に保たれます。各限度は、エクスペリエンス全体のすべてのサーバーで適用され、時間の経過とともに更新されます。
Roblox は、最後の 60 秒間にキーに関連するクエーストの使用を調べます。使用、例え現在のリクエストを含めて、は通過量の制限内にあります。リクエストが承認されると、使用が制限を超えるとリクエストが拒否されます。
リクエストタイプ | 制限 |
---|---|
読む | 1分あたり 25 MB |
書き込む | 1分あたり 4 MB |