由于网络连接不佳或其他问题,您向数据存储提出的请求可能会失败。要处理错误并返回带有错误代验证码的消息,请将数据存储函数包装在 pcall() 。
错误代码参考
错误代验证码 | 错误名称 | 错误消信息 | 注释 | |
---|---|---|---|---|
101 | KeyNameEmpty | 钥匙名不能为空。 | 检查数据存储函数的键输入是否为空字符串。 | |
102 | KeyNameLimit | 钥匙名超过了 50 字符限制。 | 检查数据存储函数的键输入超过长度 50 的情况。 | |
103 | ValueNotAllowed | 无法在 中允许 DataStore 。 | 一个错误的更新函数返回了类型 X 的值。 | |
104 | CantStoreValue | 无法在 X 中存储 DataStore . | 更新函数返回了类型 X 的值,没有序列化。 | |
105 | ValueTooLarge | 序列化值超过 X 限制。 | 如果你用 SetAsync() 或 UpdateAsync() 设置值,那么值的序列长度不能超过尺寸 X 。要检查数据的序列长度,请使用 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 | 无法从工作室写入 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 | 在个人 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 | 时戳必须是正数,不超过十分钟的未来。: | 提供给 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 + 玩家数 × 10 |
设置(限制在所有列出的函数之间共享) | SetAsync() IncrementAsync() UpdateAsync() RemoveAsync() | 60 + 玩家数 × 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 秒相关的配额使用情况。如果使用,包括当前请求,在带宽限制内,请求被批准。如果使用超过限制,请求将被拒绝。
请求类输入 | 限制 |
---|---|
阅读 | 每分钟 25MB |
写入 | 每分钟 4 MB |
存储限制
目前,数据存储库没有强制存储限制。