このページでは、データストアがリクエスト、データ、スループット、ストレージに対して強制する制限をリストし、続いて失敗したリクエストが返すエラーコードを示します。
制限
データモデルには制限があります。体験がこれらの制限を超えると、サービスは自動的に体験のデータストアの使用を制限し、将来のリクエストを次のいずれかのキューに配置します:
- セット
- 順序付きセット
- 取得
- 順序付き取得
キュー内のリクエストは、受信した順に処理されます。呼び出された関数は、そのリクエストがまだキューにある限り、継続して待機します。データストアキー自体が制限されている場合、リクエストはキューに配置されますが、一時的にスキップされます。
各キューには30リクエストの制限があります。キューの制限に達すると、リクエストは301-306の範囲のエラーコードで失敗し、リクエストが完全にドロップされたことを示します。
データ制限
データストアは、エントリごとに使用できるデータの量を制限します。
データストア名、キー名、およびスコープは、すべて特定の文字数制限内でなければなりません。string.len()を使用してその長さを確認してください。
データ(キー値)も、初期のタイプに関係なく文字列として保存されます。データのサイズは、LuauデータをシリアライズされたJSONテーブルに変換するJSONEncode()関数を使用して確認できます。
| コンポーネント | 最大文字数 |
|---|---|
| データストア名 | 50 |
| キー名 | 50 |
| スコープ | 50 |
| データ(キー値) | 4,194,304 per key |
メタデータ制限
ユーザー定義メタデータの文字数制限。
| コンポーネント | 最大文字数 |
|---|---|
| キー名 | 50 |
| 値 | 250 |
| キー-値ペア | 300 |
スループット制限
キーごとのスループット制限は、Robloxサーバーでのパフォーマンスが最適であることを保証します。各制限は、体験内のすべてのサーバーにわたって各キーに適用され、時間とともにリフレッシュされます。
Robloxは、過去60秒間のキーに関連付けられたクォータの使用状況を調査します。使用状況がスループット制限内であれば、リクエストは承認されます。使用状況が制限を超えると、リクエストは拒否されます。
| リクエストタイプ | ゲームサーバーAPI | オープンクラウドAPI | 制限 |
|---|---|---|---|
| 読み取り | GetAsync() GetVersionAsync() GetVersionAtTimeAsync() ListVersionsAsync() UpdateAsync() | データストアエントリを取得 | 25 MB per minute |
| 書き込み | SetAsync() IncrementAsync() UpdateAsync() RemoveAsync() | データストアエントリを作成、更新、増加、削除 | 4 MB per minute |
上記のスループット制限に加えて、Robloxは内部スキーマに基づいてデータをパーティションに整理します。その結果、バックエンドサーバーが同じデータストアへの高ボリュームのリクエストを受け取ると、さらなる制限がかかる可能性があります。原因に関係なく、制限はDatastoreThrottledまたはKeyThrottledエラーとして現れます。これは、スループット制限が単一のデータストアまたはキーに対して超過したかどうかによります。これらのエラーメッセージは、順序付きデータストアと標準データストアの両方に適用されます。
ストレージ制限
ストレージを安定させ、スケーラブルに保つために、データストアはゲームレベルのストレージ使用制限を使用します。
この制限は、各ゲームの基本割り当てに加え、ライフタイムユーザーの数に基づく追加の割り当てで構成されます。ライフタイムユーザーとは、あなたのゲームに少なくとも一度参加したユーザーのことです。
ストレージ制限は、次の式を使用して計算されます Total latest version storage limit = 500 MB + 1 MB × lifetime user count。
ストレージ使用量は、各キーの最新バージョンの圧縮サイズを使用して測定されます。データストアは自動的にデータをストレージ前に圧縮するため、事前に圧縮することは避けてください。事前圧縮は不必要なCPUオーバーヘッドを追加し、データストアの組み込み圧縮の効果を減少させる可能性があります。圧縮されていないデータを保存することで、Robloxの圧縮アルゴリズムの改善や将来のスキーマベースの最適化の恩恵を自動的に受けることができます。
各キーの最新バージョンのみがストレージ使用量にカウントされます。削除されたキーや置き換えられたバージョンは、保持期間中にバージョンAPIを通じてアクセス可能ですが、ストレージ使用量にはカウントされません。ただし、オープンクラウドのDeleteDataStoreメソッドを通じて削除されたデータストアは、永久に削除されるまでの30日間の削除処理期間中はストレージ使用量にカウントされ続けます。
アクセス制限
データストアは、体験およびサーバーレベルの制限の対象です。体験レベルの制限は、体験全体の同時ユーザー数に応じてスケールし、サーバーレベルの制限は設定可能で、クリエイターがツールとして使用することを目的としています。
体験制限
各体験には、データストアのタイプ、リクエストタイプ、および同時ユーザー数に基づいて、特定の数のデータストアリクエストが許可されています。各データストアタイプおよびリクエストタイプについて、制限はすべてのリストされた関数で共有されます。
- UpdateAsync()は、読み取りおよび書き込みリクエストの予算の両方から消費します。単一の呼び出しは両方の制限を減少させます。
- ゲームサーバーとオープンクラウドは予算を共有します。オープンクラウドのトラフィックは、体験内の使用によって制限される可能性があります(その逆も同様です)。詳細なガイダンスについては、制限を制御するを参照してください。
標準データストア
| リクエストタイプ | ゲームサーバーAPI | オープンクラウドAPI | 共有制限(リクエスト/分) |
|---|---|---|---|
| 読み取り | GetAsync() GetVersionAsync() GetVersionAtTimeAsync() UpdateAsync() | データストアエントリを取得 | 300 + concurrentUsers × 40 |
| 書き込み | SetAsync() IncrementAsync() UpdateAsync() | データストアエントリを作成、更新、増加 | 300 + concurrentUsers × 20 |
| リスト | ListDataStoresAsync() ListKeysAsync() ListVersionsAsync() | データストアをリスト、データストアエントリをリスト、データストアエントリのリビジョンをリスト | 300 + concurrentUsers × 2 |
| 削除 | RemoveAsync() | データストアエントリを削除、データストアを削除、データストアを復元 | 300 + concurrentUsers × 40 |
順序付きデータストア
| リクエストタイプ | ゲームサーバーAPI | オープンクラウドAPI | 共有制限(リクエスト/分) |
|---|---|---|---|
| 読み取り | GetAsync() BatchGetAsync() UpdateAsync() | 順序付きデータストアエントリを取得 | 300 + concurrentUsers × 40 |
| 書き込み | SetAsync() IncrementAsync() UpdateAsync() | 順序付きデータストアエントリを作成、更新、増加 | 300 + concurrentUsers × 20 |
| リスト | GetSortedAsync() | 順序付きデータストアエントリをリスト | 300 + concurrentUsers × 2 |
| 削除 | RemoveAsync() | 順序付きデータストアエントリを削除 | 300 + concurrentUsers × 40 |
制限を制御する
オープンクラウドとゲームサーバーのリクエストは共有されるため、それぞれが予算からどれだけ消費できるかを独立して制御することが重要です。
ゲームサーバー
個々のサーバーには、上記のように組み込みの制限があります。SetRateLimitForRequestType()とGetRequestBudgetForRequestType()の組み合わせを使用して、個々のサーバーの総予算への貢献を細かく制御します。
オープンクラウド
オープンクラウドのリクエストには、外部のレート制限ソリューションが必要です。以下のアプローチのいずれかを推奨します:
- (シンプル)各リクエストの後に短いタイムアウトを追加します。特に、同じAPIを連続ループで呼び出す場合は、タイムアウトを60 / (desired budget consumption per minute)秒に設定します。このアプローチでは、リクエストをバーストで送信することはできません。
- (堅牢)漏れバケツ戦略を使用してローカルレートリミッターを実装します。
以下のNode.jsコードサンプルには、参照実装が含まれています。
const apiKey = process.env.API_KEY;
if (!apiKey) {
throw new Error('API_KEY環境変数が設定されていません。');
}
const apiHeaderKey = 'x-api-key';
const universeId = '';
const dataStoreId = 'Inventory';
const baseUrl = 'https://apis.roblox.com/cloud/v2/';
// --- 操作ごとのレート制限設定(リクエスト/分) ---
const LIST_RATE_PER_MIN = 60;
const GET_RATE_PER_MIN = 120;
const UPDATE_RATE_PER_MIN = 60;
// 操作ごとの上限間隔:60 / (リクエスト/分)秒。
const LIST_INTERVAL_MS = (60 / LIST_RATE_PER_MIN) * 1000;
const GET_INTERVAL_MS = (60 / GET_RATE_PER_MIN) * 1000;
const UPDATE_INTERVAL_MS = (60 / UPDATE_RATE_PER_MIN) * 1000;
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
// リクエストを実行し、その操作の間隔を待ってから返します。
async function throttledFetch(url, options, intervalMs) {
const response = await fetch(url, options);
await sleep(intervalMs);
return response;
}
async function listEntries(universe, dataStore) {
const listPath = `universes/${universe}/data-stores/${dataStore}/entries`;
const url = baseUrl + listPath;
const response = await throttledFetch(url, {
headers: { [apiHeaderKey]: apiKey }
}, LIST_INTERVAL_MS);
return response.json();
}
async function getEntry(path) {
const url = baseUrl + path;
const response = await throttledFetch(url, {
headers: { [apiHeaderKey]: apiKey }
}, GET_INTERVAL_MS);
return response.json();
}
async function updateEntry(path, payload) {
const url = baseUrl + path;
const response = await throttledFetch(url, {
method: 'PATCH',
headers: {
[apiHeaderKey]: apiKey,
'Content-Type': 'application/json'
},
body: JSON.stringify(payload) // ボディは文字列でなければなりません
}, UPDATE_INTERVAL_MS);
return response;
}
(async () => {
try {
const entries = await listEntries(universeId, dataStoreId);
for (const entry of entries.dataStoreEntries) {
const path = entry.path;
console.log(`\nエントリを処理中: ${path}`);
const currentData = await getEntry(path);
currentData.value.currency += 10;
const payload = { value: currentData.value };
const updateResponse = await updateEntry(path, payload);
console.log(`ステータス: ${updateResponse.status}`);
console.log(`レスポンス: ${await updateResponse.text()}`);
}
} catch (error) {
console.error('実行中にエラーが発生しました:', error);
}
})();サーバー制限
各サーバーには、そのサーバー内のプレイヤー数に基づいて、各リクエストタイプの設定可能なレート制限があります。サーバーは、最初に作成されたときに追加のリクエスト予算の一時的なバーストを受け取ります。GetRequestBudgetForRequestType()を使用して、現在のサーバーがいつでも行えるデータストアリクエストの数を確認します。
これらの制限は、クリエイターによって設定可能です。 SetRateLimitForRequestType() APIを使用することで、クリエイターは各リクエストタイプのデータストアのレート制限を設定できます。
以下のデフォルトレート制限は、APIが呼び出されない場合に適用されます:
標準データストア
| リクエストタイプ | DataStoreRequestType Enum | ゲームサーバーAPI | リクエスト/分 |
|---|---|---|---|
| 読み取り | StandardRead | GetAsync() GetVersionAsync() GetVersionAtTimeAsync() UpdateAsync() | 60 + numPlayers × 40 |
| 書き込み | StandardWrite | SetAsync() IncrementAsync() UpdateAsync() | 60 + numPlayers × 40 |
| リスト | StandardList | ListDataStoresAsync() ListKeysAsync() ListVersionsAsync() | 5 + numPlayers × 2 |
| 削除 | StandardRemove | RemoveAsync() | 60 + numPlayers × 40 |
| RemoveVersion (非推奨) | RemoveVersionAsync | RemoveVersionAsync() | 5 + numPlayers × 2 |
順序付きデータストア
| リクエストタイプ | DataStoreRequestType Enum | ゲームサーバーAPI | リクエスト/分 |
|---|---|---|---|
| 読み取り | OrderedRead | GetAsync() BatchGetAsync() UpdateAsync() | 60 + numPlayers × 40 |
| 書き込み | OrderedWrite | SetAsync() IncrementAsync() UpdateAsync() | 30 + numPlayers × 5 |
| リスト | OrderedList | GetSortedAsync() | 5 + numPlayers × 2 |
| 削除 | OrderedRemove | RemoveAsync() | 30 + numPlayers × 5 |
エラーコードリファレンス
データストアへのリクエストは、接続が不良であるか、他の問題により失敗する可能性があります。エラーを処理し、エラーコードを持つメッセージを返すには、データストア関数をpcall()でラップします。
UpdateAsync()のような失敗した書き込み呼び出しは、ゲームサーバーが成功した応答を受け取らなかったことを意味します。バックエンドの書き込みが発生しなかったことを常に保証するわけではありません。いくつかの失敗シナリオでは、最終的な書き込み状態は、キャッシュなしでフォローアップの読み取りで確認されるまで呼び出し元には不明な場合があります。
| エラーコード | エラー名 | エラーメッセージ | ノート | |
|---|---|---|---|---|
| 101 | KeyNameEmpty | キー名は空にできません。 | データストア関数に入力されたキーが空の文字列であるか確認してください。 | |
| 102 | KeyNameLimit | キー名が50文字の制限を超えています。 | データストア関数に入力されたキーが50文字を超えているか確認してください。 | |
| 103 | ValueNotAllowed | DataStoreにXを許可できません。 | 不正な更新関数がX型の値を返しました。 | |
| 104 | CantStoreValue | DataStoreにXを保存できません。 | 更新関数がシリアライズできないX型の値を返しました。 | |
| 105 | ValueTooLarge | シリアライズされた値がX制限を超えています。 | SetAsync()またはUpdateAsync()で値を設定している場合、値のシリアライズされた長さはXを超えてはいけません。データのシリアライズされた長さを確認するには、JSONEncode()を使用してください。 | |
| 106 | MaxValueInvalid | MaxValueは整数でなければなりません。 | GetSortedAsync()に最大値を渡す場合、それは整数でなければなりません。 | |
| 106 | MinValueInvalid | MinValueは整数でなければなりません。 | GetSortedAsync()に最小値を渡す場合、それは整数でなければなりません。 | |
| 106 | PageSizeGreater | PageSizeは事前定義された範囲内でなければなりません。 | OrderedDataStoreの最小ページサイズは1です。 | |
| 106 | PageSizeLesser | PageSizeは事前定義された範囲内でなければなりません。 | 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アクセスが有効になっていないため、スタジオからDataStoreに書き込むことはできません。 | スタジオでデータストアを使用するには、APIアクセスを有効にする必要があります。 | |
| 404 | InternalError | OrderedDataStoreが存在しません。 | このリクエストに関連付けられたOrderedDataStoreが見つかりませんでした。これはデータの破損の兆候かもしれません。後で再試行してください。 | |
| 501 | InternalError | データが破損している可能性があるため、レスポンスを解析できません。 | サーバーはリクエストに対するレスポンスを解析できませんでした。これはデータの破損の兆候かもしれません。後で再試行してください。 | |
| 502 | RequestRejected | APIサービスがエラーXでリクエストを拒否しました。 | Robloxサーバーで処理中にエラーXが発生しました。後で再試行してください。 | |
| 503 | InternalError | データストアリクエストは成功しましたが、キーが見つかりませんでした。 | リクエストされたキーがデータストアに見つかりませんでした。これはデータの破損の兆候かもしれません。後で再試行してください。 | |
| 504 | InternalError | データストアリクエストは成功しましたが、レスポンスが正しくフォーマットされていませんでした。 | サーバーはリクエストに対するレスポンスを解析できませんでした。これはデータの破損の兆候かもしれません。後で再試行してください。 | |
| 505 | InternalError | OrderedDataStoreリクエストは成功しましたが、レスポンスが正しくフォーマットされていませんでした。 | サーバーはOrderedDataStoreリクエストに対するレスポンスを解析できませんでした。これはデータの破損の兆候かもしれません。後で再試行してください。 | |
| 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は現在のスループットでリクエストを処理できません。 | ||
| GetVersionAtTimeAsyncThrottle | GetVersionAtTimeAsyncリクエストがドロップされました。リクエストは制限されました。 | GetVersionAtTimeAsync()リクエストが最大キューサイズを超え、Robloxは現在のスループットでリクエストを処理できません。 | ||
| ListDataStoresAsyncThrottle | ListDataStoresAsyncリクエストがドロップされました。リクエストは制限されました。 | ListDataStoresAsync()リクエストが最大キューサイズを超え、Robloxは現在のスループットでリクエストを処理できません。 | ||
| ListKeysAsyncThrottle | ListKeysAsyncリクエストがドロップされました。リクエストは制限されました。 | ListKeysAsync()リクエストが最大キューサイズを超え、Robloxは現在のスループットでリクエストを処理できません。 | ||
| ListVersionsAsyncThrottle | ListVersionsAsyncリクエストがドロップされました。リクエストは制限されました。 | ListVersionsAsync()リクエストが最大キューサイズを超え、Robloxは現在のスループットでリクエストを処理できません。 | ||
| RemoveVersionAsyncThrottle | RemoveVersionAsyncリクエストがドロップされました。リクエストは制限されました。 | RemoveVersionAsync()リクエストが最大キューサイズを超え、Robloxは現在のスループットでリクエストを処理できません。 | ||
| InvalidTimestamp | タイムスタンプは正であり、10分以上未来であってはなりません。 | GetVersionAtTimeAsync()に提供されたタイムスタンプは無効でした。 | ||
| StandardReadExperienceThrottled | StandardReadリクエストが体験制限によって制限されました。 | GetAsync()、GetVersionAsync()、GetVersionAtTimeAsync()、または標準データストアのUpdateAsync()の読み取りがStandardRead体験レベルのレート制限を超えました。 | ||
| StandardWriteExperienceThrottled | StandardWriteリクエストが体験制限によって制限されました。 | SetAsync()、IncrementAsync()、または標準データストアのUpdateAsync()の書き込みがStandardWrite体験レベルのレート制限を超えました。 | ||
| StandardListExperienceThrottled | StandardListリクエストが体験制限によって制限されました。 | ListKeysAsync()、ListVersionsAsync()、または標準データストアのListDataStoresAsync()へのリクエストがStandardList体験レベルのレート制限を超えました。 | ||
| StandardRemoveExperienceThrottled | StandardRemoveリクエストが体験制限によって制限されました。 | 標準データストアのRemoveAsync()へのリクエストがStandardRemove体験レベルのレート制限を超えました。 | ||
| OrderedReadExperienceThrottled | OrderedReadリクエストが体験制限によって制限されました。 | GetAsync()、BatchGetAsync()、または順序付きデータストアのUpdateAsync()の読み取りがOrderedRead体験レベルのレート制限を超えました。 | ||
| OrderedWriteExperienceThrottled | OrderedWriteリクエストが体験制限によって制限されました。 | SetAsync()、IncrementAsync()、または順序付きデータストアのUpdateAsync()の書き込みがOrderedWrite体験レベルのレート制限を超えました。 | ||
| OrderedListExperienceThrottled | OrderedListリクエストが体験制限によって制限されました。 | 順序付きデータストアのGetSortedAsync()へのリクエストがOrderedList体験レベルのレート制限を超えました。 | ||
| OrderedRemoveExperienceThrottled | OrderedRemoveリクエストが体験制限によって制限されました。 | 順序付きデータストアのRemoveAsync()へのリクエストがOrderedRemove体験レベルのレート制限を超えました。 | ||
| StandardReadGameServerThrottled | StandardReadリクエストがゲームサーバー制限またはリクエストキューが満杯によって制限されました。 | GetAsync()、GetVersionAsync()、GetVersionAtTimeAsync()、または標準データストアのUpdateAsync()の読み取りがStandardReadゲームサーバーレベルのレート制限を超えました。 | ||
| StandardWriteGameServerThrottled | StandardWriteリクエストがゲームサーバー制限またはリクエストキューが満杯によって制限されました。 | SetAsync()、IncrementAsync()、または標準データストアのUpdateAsync()の書き込みがStandardWriteゲームサーバーレベルのレート制限を超えました。 | ||
| StandardListGameServerThrottled | StandardListリクエストがゲームサーバー制限またはリクエストキューが満杯によって制限されました。 | ListKeysAsync()、ListVersionsAsync()、または標準データストアのListDataStoresAsync()へのリクエストがStandardListゲームサーバーレベルのレート制限を超えました。 | ||
| StandardRemoveGameServerThrottled | StandardRemoveリクエストがゲームサーバー制限またはリクエストキューが満杯によって制限されました。 | 標準データストアのRemoveAsync()へのリクエストがStandardRemoveゲームサーバーレベルのレート制限を超えました。 | ||
| OrderedReadGameServerThrottled | OrderedReadリクエストがゲームサーバー制限またはリクエストキューが満杯によって制限されました。 | GetAsync()、BatchGetAsync()、または順序付きデータストアのUpdateAsync()の読み取りがOrderedReadゲームサーバーレベルのレート制限を超えました。 | ||
| OrderedWriteGameServerThrottled | OrderedWriteリクエストがゲームサーバー制限またはリクエストキューが満杯によって制限されました。 | SetAsync()、IncrementAsync()、または順序付きデータストアのUpdateAsync()の書き込みがOrderedWriteゲームサーバーレベルのレート制限を超えました。 | ||
| OrderedListGameServerThrottled | OrderedListリクエストがゲームサーバー制限またはリクエストキューが満杯によって制限されました。 | 順序付きデータストアのGetSortedAsync()へのリクエストがOrderedListゲームサーバーレベルのレート制限を超えました。 | ||
| OrderedRemoveGameServerThrottled | OrderedRemoveリクエストがゲームサーバー制限またはリクエストキューが満杯によって制限されました。 | 順序付きデータストアのRemoveAsync()へのリクエストがOrderedRemoveゲームサーバーレベルのレート制限を超えました。 |
サーバーエラーコード
| エラー名 | エラーメッセージ | 備考 |
|---|---|---|
| DatastoreDeleted | データストアが削除されました。 | データストアが以前に削除されたため、データストアに対する操作を行うことができませんでした。 |
| DatastoreThrottled | リクエストレートがdatastoreの許可された最大値を超えています。 | 単一のデータストアに対して送信されたリクエストが多すぎました。 |
| InternalServerError | 内部サーバーエラーが発生しました。 | Robloxサーバーでの偶発的なエラーです。再試行してください。理想的には指数バックオフを使用してください。 |
| InvalidExclusiveStartKey | 提供された排他的開始キーが無効です。 | ListKeysAsync()のようなリスト操作に提供された排他的開始キー(カーソル)が無効です。 |
| InvalidPlace | 提供されたプレイスが無効です。 | プレイスに対する一致するユニバースIDがありません。後でもう一度試してください。 |
| InvalidTarget | 提供されたターゲットが無効です。 | 順序付きデータストアキー名が50文字の制限を超えています。 |
| InvalidUniverse | 提供されたユニバースが無効です。 | ユニバースに対する一致するプレイスIDがありません。後でもう一度試してください。 |
| InvalidUserIds | 提供されたユーザーIDの形式が無効です。 | ユーザーIDの解析に失敗しました。 |
| KeyThrottled | リクエストレートがキーの許可された最大値を超えています。 | 単一のキーに対する最大許可リクエストレートを超えています。 |
| KeyNotFound | 要求されたキーは存在しません。 | キーは存在しません。 |
| N/A | 進むページがありません。 | 最後のページでPages:AdvanceToNextPageAsync()を呼び出すとこのエラーが発生します。 |
| StandardReadExperienceThrottled | 標準読み取りリクエストレートが体験の許可された最大値を超えています。 | GetAsync()、GetVersionAsync()、GetVersionAtTimeAsync()、または標準データストアのUpdateAsync()の読み取りがStandardRead体験レベルのレート制限を超えました。 |
| StandardWriteExperienceThrottled | 標準書き込みリクエストレートが体験の許可された最大値を超えています。 | SetAsync()、IncrementAsync()、または標準データストアのUpdateAsync()の書き込みがStandardWrite体験レベルのレート制限を超えました。 |
| StandardListExperienceThrottled | 標準リストリクエストレートが体験の許可された最大値を超えています。 | ListKeysAsync()、ListVersionsAsync()、または標準データストアのListDataStoresAsync()へのリクエストがStandardList体験レベルのレート制限を超えました。 |
| StandardRemoveExperienceThrottled | 標準削除リクエストレートが体験の許可された最大値を超えています。 | 標準データストアのRemoveAsync()へのリクエストがStandardRemove体験レベルのレート制限を超えました。 |
| OrderedReadExperienceThrottled | 順序付き読み取りリクエストレートが体験の許可された最大値を超えています。 | GetAsync()、BatchGetAsync()、または順序付きデータストアのUpdateAsync()の読み取りがOrderedRead体験レベルのレート制限を超えました。 |
| OrderedWriteExperienceThrottled | 順序付き書き込みリクエストレートが体験の許可された最大値を超えています。 | SetAsync()、IncrementAsync()、または順序付きデータストアのUpdateAsync()の書き込みがOrderedWrite体験レベルのレート制限を超えました。 |
| OrderedListExperienceThrottled | 順序付きリストリクエストレートが体験の許可された最大値を超えています。 | 順序付きデータストアのGetSortedAsync()へのリクエストがOrderedList体験レベルのレート制限を超えました。 |
| OrderedRemoveExperienceThrottled | 順序付き削除リクエストレートが体験の許可された最大値を超えています。 | 順序付きデータストアのRemoveAsync()へのリクエストがOrderedRemove体験レベルのレート制限を超えました。 |