您向數據存儲提出的請求可能會因連接不佳或其他問題而失敗。要處理錯誤並返回錯誤代碼的訊息,請將數據儲存功能包裝在 pcall() 中。
錯誤代碼參考
錯誤代碼 | 錯誤名稱 | 錯誤訊息 | 注意事項 | |
---|---|---|---|---|
101 | KeyNameEmpty | 鑰匙名稱不能為空。 | 檢查數據儲存功能的鍵輸入是否為空白字串。 | |
102 | KeyNameLimit | 鑰匙名稱超出了 50 字元限制。 | 檢查是否超過數據儲存函數的鍵輸入長度為 50。 | |
103 | ValueNotAllowed | 無法在 DataStore 中允許 X。 | 一個不好的更新功能返回了類型值 X 的值。 | |
104 | CantStoreValue | 無法在 中存儲 DataStore。 | 更新功能返回了類型 X 的值,未serialize。 | |
105 | ValueTooLarge | 序列化值超出了 X 限制。 | 如果你用 或 》 設置值,值的serialize長度不能超過尺寸 X 。要檢查數據的serialize長度,請使用 JSONEncode() 。 | |
106 | MaxValueInvalid | MaxValue 必須是整數。 | 如果你傳送最大值給 GetSortedAsync() 對於 OrderedDataStore,它必須是整數。 | |
106 | MinValueInvalid | MinValue 必須是整數。 | 如果你將最小值傳送到 GetSortedAsync() 對於 OrderedDataStore,它必須是整數。 | |
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 | 無法從 Studio 寫入 DataStore,因為 API 存取未啟用。 | 在 Studio 中使用數據儲存必須啟用 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 限制。 | serialize的元數據尺寸超出了限制的 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 | 時戳必須是正數,不超過十分鐘的未來。: | 提供給 GetVersionAtTimeAsync() 的時戳無效。 |
伺服器錯誤碼
錯誤名稱 | 錯誤訊息 | 注意事項 |
---|---|---|
DatastoreThrottled | 請求率超出了 datastore 的允許最大值。 | 已向單一資料儲存發送過多請求。 |
InternalServerError | 發生了內部伺服器錯誤。 | 在 Roblox 伺服器上發生時間性錯誤。請再試一次,最好是使用指數級退出。 |
InvalidPlace | 提供的地點無效。 | 當空間沒有符合的宇宙ID。稍後再試一次。 |
InvalidTarget | 提供的目標無效。 | 命名規則的數據儲存庫鑰匙名稱超出了 50 字符限制。 |
InvalidUniverse | 提供的宇宙無效。 | 宇宙沒有符合的地點ID。稍後再試一次。 |
InvalidUserIds | 提供的使用者ID格式無效。 | 無法解析使用者ID。 |
KeyThrottled | 請求速率超出鑰鍵的允許最大值。 | 請求速率超過單一鍵允許的最大請求速率。 |
KeyNotFound | 請求的鑰匙不存在。 | 鑰匙不存在。 |
N/A | 沒有可前進的頁面。 | 當您在最後一頁呼叫 Pages:AdvanceToNextPageAsync() 時,發生此錯誤。 |
限制
數據模型有 限制 。如果體驗超出這些限制,服務會自動限制體驗的資料儲存使用,並導致未來請求放置在以下隊列之一:
- 設定
- 已排序設定
- 取得
- 已排序取得
隊列中的請求按收到的順序處理。被呼叫的函數繼續生成,直到其請求仍然在隊列中。如果數據儲存關鍵本身被限制,請求將被放置在隊列中,但暫時跳過。
每個隊列都有 30 個請求的限制。當隊列的限制達到時,請求會以錯誤代碼在 301-306 範圍內失敗,表示請求已全部被丟棄。
伺服器限制
每個伺服器可以根據請求類型和使用者數量獲得一定數量的數據儲存請求。使用 GetRequestBudgetForRequestType() 來確認當前位置可以提出的數據儲存請求數量。
請求類輸入 | 功能 | 每分鐘的請求 |
---|---|---|
取得 | GetAsync() | 60 + numPlayers × 10 |
設置 (限制在所有列出的功能中共享) | SetAsync() IncrementAsync() UpdateAsync() RemoveAsync() | 60 + numPlayers × 10 |
獲得排序 | GetSortedAsync() | 5 + numPlayers × 2 |
取得版本 | GetVersionAsync() GetVersionAtTimeAsync() | 5 + numPlayers × 2 |
列表 | ListDataStoresAsync() ListKeysAsync() ListVersionAsync() | 5 + numPlayers × 2 |
移除 | RemoveVersionAsync() | 5 + numPlayers × 2 |
數據限制
數據儲存限制每個入口可使用的數據量。
資料儲存名稱、鑰匙名稱和範圍必須都在特定字元長度下。使用string.len()檢查它們的長度。
資料 (鑰匙值) 也會以字串的形式儲存,無論其初始輸入為何。您可以使用 JSONEncode() 函數檢查數據的大小,該函數會將 Luau 數據轉換為 JSON 表。
元件 | 最大字符數 |
---|---|
數據儲存名稱 | 50 |
關鍵字名稱 | 50 |
範圍 | 50 |
數據 (鑰匙值) | 每鍵 4,194,304 |
元數據限制
對使用者定義的元數據中字元數量的限制。
元件 | 最大字符數 |
---|---|
關鍵字名稱 | 50 |
值 | 250 |
關鍵值對 | 300 |
輸出限制
每個鍵的輸出限制確保在 Roblox 伺服器上的性能最佳化。每個限制適用於體驗中所有服務器的每個單獨的鑰匙,並隨著時間過去刷新。
Roblox 檢查最後 60 秒內鑰匙與配額的使用情況。如果使用,包括當前請邀請,在吞吐限制內,請求將被批准。如果使用超出限制,請求將被拒絕。
請求類輸入 | 限制 |
---|---|
讀取 | 每分鐘 25 MB |
寫入 | 每分鐘 4 MB |
儲存限制
目前,沒有強制數據儲存限制在數據儲存上。