您向数据存储发出的请求因连接不良或其他问题而失败。要处理错误并使用错误代验证码返回消息,请将数据存储功能包含在 pcall() 中。
错误代码引用
错误代码 | 错误名称 | 错误消息 | 注释 | |
---|---|---|---|---|
101 | KeyNameEmpty | 钥匙名称不能为空。 | 检查输入到数据存储函数的钥匙是否为空字符串。 | |
102 | KeyNameLimit | 钥匙名称超出 50 个字符限制。 | 检查数据存储函数中的钥匙输入是否超过 50 长度。 | |
103 | ValueNotAllowed | 无法在 DataStore 中允许 X。 | 一个坏的更新函数返回了一个值为 X 的类型。 | |
104 | CantStoreValue | 无法将 X 存储在 DataStore 中。 | 更新函数返回了一个值为 X 的类型,该类型不能 serialize。 | |
105 | ValueTooLarge | 串值超过 X 限制。 | 如果您使用 SetAsync() 或 UpdateAsync() 设置值,值的串化长度不能超过 X 。要检查值串化长度,请使用 1> Class.HttpService:JSONEncode()|JSONEncode()1> . | |
106 | MaxValueInvalid | MaxValue 必须是一个整数。 | 如果您将最大值传递给 GetSortedAsync() 为一个 OrderedDataStore,它必须是一个整数。 | |
106 | MinValueInvalid | MinValue 必须是一个整数。 | 如果您将最小值传递给 GetSortedAsync() 为一个 OrderedDataStore,它必须是一个整数。 | |
106 | PageSizeGreater | PageSize 必须在预定范围内。 | 对于 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 | 无法从 Studio 写入 DataStore 因为 API 访问不是启用的。 | 必须启用 API 访问才能在工作室中使用数据存储。 | |
404 | InternalError | OrderedDataStore 不存在。 | 与此请求相关的 OrderedDataStore 未找到。这可能是数据丢失的标志。请稍后重试。 | |
501 | InternalError | 因为数据可能会丢失,无法解析响应。 | 无法解析您的请求。这可能是数据丢失的标志。请稍后重试。 | |
502 | RequestRejected | API 服务因错误而拒绝请求 X。 | 在 Roblox 服务器上处理时发生错误 X 。请稍后再试。 | |
503 | InternalError | 数据存储请求成功,但钥匙未找到。 | 请求的钥匙未找到数据商店中。 这可能是数据丢失的标志。 请稍后重试。 | |
504 | InternalError | 数据存储请求成功,但不能正确格式化。 | 无法解析您的请求。这可能是数据丢失的标志。请稍后重试。 | |
505 | InternalError | OrderedDataStore 请求成功,但是回应未能正确格式化。 | 服务器无法解析您的 OrderedDataStore 请求的响应。这可能是数据丢失的标志。请稍后重试。 | |
509 | OperationNotAllowed | 在使用 Personal 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 请求已掉落。请求被限制。 | Class.DataStoreService:ListDataStoresAsync()|ListDataStoresAsync() Class.DataStoreService:ListDataStoresAsync()|ListDataStoresAsync() 请求超过了最大队列长度,Roblox 无法在当前通过率处理请求。 | ||
ListKeysAsyncThrottle | ListKeysAsync 请求已掉落。请求被限制。 | ListKeysAsync() 请求超过了最大队列长度,Roblox 无法在当前通过率处理请求。 | ||
ListVersionsAsyncThrottle | ListVersionsAsync 请求已掉落。请求被限制。 | ListVersionsAsync() 请求超过了最大队列长度,Roblox 无法在当前通量处理请求。 | ||
RemoveVersionAsyncThrottle | RemoveVersionAsync请求已掉落。请求被限制。 | RemoveVersionAsync() 请求超过了最大队列长度,Roblox 无法在当前通过率处理请求。 |
服务器错误代码
错误名称 | 错误消息 | 注释 |
---|---|---|
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 + 玩家数 × 10 |
设置 (限制是共享在所有列出的函数之间) | SetAsync() IncrementAsync() UpdateAsync() 0> Class.GlobalDataStore:RemoveAsync()|RemoveAsync()0> | 60 + 玩家数 × 10 |
排序好了 | GetSortedAsync() | 5 + 数玩家 × 2 |
获取版本 | GetVersionAsync() | 5 + 数玩家 × 2 |
列表 | ListDataStoresAsync() ListKeysAsync() ListVersionAsync() | 5 + 数玩家 × 2 |
移除 | RemoveVersionAsync() | 5 + 数玩家 × 2 |
数据限制
数据存储限制每个条目的数据使用量。
数据存储名称、钥匙名称和范围 必须都在特定字符长度下。使用 string.len() 检查它们的长度。
数据(钥匙值)也存储为字符串,无论其初始输入。您可以使用 JSONEncode() 函数检查数据的大小,这将 Lua 数据转换为串形 JSON 表。
组件 | 最大字符数 |
---|---|
数据商店名称 | 50 |
钥匙名称 | 50 |
范围 | 50 |
数据 (键值) | 4,194,304 每个键 |
数据限制
限制用户定义金数据的字符数。
组件 | 最大字符数 |
---|---|
钥匙名称 | 50 |
值 | 250 |
键值对 | 300 |
限制输出
通过键通过限制可以确保在 Roblox 服务器上的性能最佳。 每个限制都适用于每个单个钥匙在所有服务器上的时间,并随着时间的推移而刷新。
Roblox 在过去的 60 秒内评估使用率,包括当前请求在内的使用率。如果使用率超过限制,请求将被批准。如果使用率超过限制,请求将被拒绝。
请求类型 | 限制 |
---|---|
阅读 | 每分钟 25 MB |
写入 | 每分钟 4 MB |