Pedidos que você faz para armazenamentos de dados podem falhar devido à má conectividade ou outros problemas.Para lidar com erros e retornar mensagens com um código de erro, envolva as funções do armazenamento de dados em pcall().
Referência de código de erro
Código de erro | Nome do erro | Mensagem de erro | Notas | |
---|---|---|---|---|
101 | KeyNameEmpty | O nome da chave não pode estar vazio. | Verifique se a entrada de chave na função do armazenamento de dados é uma string vazia. | |
102 | KeyNameLimit | O nome da chave excede o limite de 50 caracteres. | Verifique se a entrada de chave na função do armazenamento de dados excede um comprimento de 50. | |
103 | ValueNotAllowed | Não é possível permitir X em >. | Uma função de atualização ruim retornou um valor do tipo X. | |
104 | CantStoreValue | Não é possível armazenar X em DataStore. | A função de atualização retornou um valor do tipo X que não serializou. | |
105 | ValueTooLarge | O valor serializado excede o limite X. | Se você estiver definindo um valor com SetAsync() ou UpdateAsync(), o comprimento serializado do valor não pode exceder o tamanho X.Para verificar o comprimento serializado dos dados, use JSONEncode(). | |
106 | MaxValueInvalid | MaxValue deve ser um inteiro. | Se você estiver passando um valor máximo para GetSortedAsync() por um OrderedDataStore , deve ser um inteiro. | |
106 | MinValueInvalid | MinValue deve ser um inteiro. | Se você estiver passando um valor mínimo para GetSortedAsync() por um OrderedDataStore , deve ser um inteiro. | |
106 | PageSizeGreater | PageSize deve estar dentro de um alcance pré-definido. | O tamanho mínimo da página para um OrderedDataStore é 1. | |
106 | PageSizeLesser | PageSize deve estar dentro de um alcance pré-definido. | O tamanho máximo da página para um OrderedDataStore é 100. | |
107 | MinMaxOrderInvalid | MaxValue deve ser maior ou igual a MinValue. | O valor máximo deve ser maior ou igual ao valor mínimo para GetSortedAsync() . | |
301 | GetAsyncThrottle | GetAsync pedido foi rejeitado. O pedido foi limitado, mas a fila estava cheia. | GetAsync() a solicitação excedeu o tamanho máximo da fila e o Roblox não pode processar as solicitações no ritmo atual. | |
302 | SetAsyncThrottle | SetAsync pedido foi rejeitado. O pedido foi limitado, mas a fila estava cheia. | SetAsync() a solicitação excedeu o tamanho máximo da fila e o Roblox não pode processar as solicitações no ritmo atual. | |
303 | IncreAsyncThrottle | IncrementAsync pedido foi rejeitado. O pedido foi limitado, mas a fila estava cheia. | IncrementAsync() a solicitação excedeu o tamanho máximo da fila e o Roblox não pode processar as solicitações no ritmo atual. | |
304 | UpdateAsyncThrottle | UpdateAsync pedido foi rejeitado. O pedido foi limitado, mas a fila estava cheia. | UpdateAsync() a solicitação excedeu o tamanho máximo da fila e o Roblox não pode processar as solicitações no ritmo atual. | |
304 | TransformThrottle | UpdateAsync pedido foi rejeitado. O pedido foi limitado, mas a fila estava cheia. | UpdateAsync() a solicitação excedeu o tamanho máximo da fila e o Roblox não pode processar as solicitações no ritmo atual. | |
305 | GetSortedThrottle | GetSorted pedido foi rejeitado. O pedido foi limitado, mas a fila estava cheia. | GetSortedAsync() a solicitação excedeu o tamanho máximo da fila e o Roblox não pode processar as solicitações no ritmo atual. | |
306 | RemoveAsyncThrottle | RemoveAsync pedido foi rejeitado. O pedido foi limitado, mas a fila estava cheia. | RemoveAsync() a solicitação excedeu o tamanho máximo da fila e o Roblox não pode processar as solicitações no ritmo atual. | |
401 | DataModelNoAccess | O pedido falhou. DataModel é inacessível enquanto a experiência está sendo desativada. | DataModel não está inicializado porque a experiência está sendo desativada. | |
402 | LuaWebSrvsNoAccess | O pedido falhou. LuaWebService é inacessível enquanto a experiência está sendo desativada. | LuaWebService não está inicializado porque a experiência está sendo desativada. | |
403 | StudioAccessToApisNotAllowed | Não é possível escrever em DataStore do Studio porque o acesso à API não está habilitado. | O acesso à API deve estar ativo para usar armazenamentos de dados no Studio. | |
404 | InternalError | OrderedDataStore não existe. | O OrderedDataStore associado a este pedido não foi encontrado. Este pode ser um sinal de corrupção de dados. Tente novamente mais tarde. | |
501 | InternalError | Não é possível analisar a resposta porque os dados podem estar corrompidos. | O servidor não foi capaz de analisar a resposta à sua solicitação. Isso pode ser um sinal de corrupção de dados. Tente novamente mais tarde. | |
502 | RequestRejected | Os Serviços de API rejeitaram o pedido com erro X. | O erro X ocorreu ao processar nos servidores do Roblox. Tente novamente mais tarde. | |
503 | InternalError | O pedido de armazenamento de dados foi bem-sucedido, mas a chave não foi encontrada. | A chave solicitada não foi encontrada no armazenamento de dados. Isso pode ser um sinal de corrupção de dados. Tente novamente mais tarde. | |
504 | InternalError | O pedido da Loja de Dados foi bem-sucedido, mas a resposta não foi formatada corretamente. | O servidor não foi capaz de analisar a resposta à sua solicitação. Isso pode ser um sinal de corrupção de dados. Tente novamente mais tarde. | |
505 | InternalError | OrderedDataStore solicitação foi bem-sucedida, mas a resposta não foi formatada corretamente. | O servidor não foi capaz de analisar a resposta à sua solicitação OrderedDataStore . Este pode ser um sinal de corrupção de dados. Tente novamente mais tarde. | |
509 | OperationNotAllowed | As operações da Loja de Dados são bloqueadas enquanto executadas em um RCC Pessoal para prevenir possível corrupção de dados. | Escrituras na Loja de Dados são bloqueadas em canais RCC privados. | |
511 | AttributeSizeTooLarge | O tamanho do atributo de metadados excede o limite X. | O tamanho do metadado serializado excede o limite de X. O valor X é dinâmico. Se o tamanho mudar, o valor também muda. | |
512 | UserIdLimitExceeded | UserID o tamanho excede o limite X. | O comprimento do array de IDs de usuário fornecido pelo usuário excede o limite de X. | |
513 | AttributeFormatError | O formato de atributo userId é inválido. | O ID de usuário fornecido não é um número. | |
513 | AttributeFormatError | O formato de metadados de atributo é inválido. | O metadado não é uma tabela. | |
GetVersionAsyncThrottle | GetVersionAsync pedido foi descartado.O pedido foi limitado.: | GetVersionAsync() A solicitação excedeu o tamanho máximo da fila e o Roblox não pode processar as solicitações no ritmo atual. | ||
GetVersionAtTimeAsyncThrottle | GetVersionAtTimeAsync pedido foi descartado.O pedido foi limitado.: | GetVersionAtTimeAsync() A solicitação excedeu o tamanho máximo da fila e o Roblox não pode processar as solicitações no ritmo atual. | ||
ListDataStoresAsyncThrottle | ListDataStoresAsync pedido foi descartado.O pedido foi limitado.: | ListDataStoresAsync() A solicitação excedeu o tamanho máximo da fila e o Roblox não pode processar as solicitações no ritmo atual. | ||
ListKeysAsyncThrottle | ListKeysAsync pedido foi descartado.O pedido foi limitado.: | ListKeysAsync() A solicitação excedeu o tamanho máximo da fila e o Roblox não pode processar as solicitações no ritmo atual. | ||
ListVersionsAsyncThrottle | ListVersionsAsync pedido foi descartado.O pedido foi limitado.: | ListVersionsAsync() A solicitação excedeu o tamanho máximo da fila e o Roblox não pode processar as solicitações no ritmo atual. | ||
RemoveVersionAsyncThrottle | RemoveVersionAsync pedido foi descartado.O pedido foi limitado.: | RemoveVersionAsync() A solicitação excedeu o tamanho máximo da fila e o Roblox não pode processar as solicitações no ritmo atual. | ||
InvalidTimestamp | O tempo de marcação deve ser positivo e não mais de dez minutos no futuro.: | O registro de data e hora fornecido para GetVersionAtTimeAsync() não era válido. |
Códigos de erro do servidor
Nome do erro | Mensagem de erro | Notas |
---|---|---|
DatastoreThrottled | A taxa de solicitação excede o máximo permitido para o datastore. | Muitos pedidos foram enviados para um único armazenamento de dados. |
InternalServerError | Ocorreu um erro interno do servidor. | Erro ocasional nos servidores do Roblox. Tente novamente, idealmente com recuo exponencial. |
InvalidPlace | O local fornecido é inválido. | Não há ID de Universo correspondente para o local. Tente novamente mais tarde. |
InvalidTarget | O alvo fornecido é inválido. | O nome da chave da Loja de Dados Ordenada excede o limite de 50 caracteres. |
InvalidUniverse | O universo fornecido é inválido. | Não há ID de local correspondente para o universo. Tente novamente mais tarde. |
InvalidUserIds | Os IDs de usuário fornecidos têm um formato inválido. | Falha ao analisar IDs de usuário. |
KeyThrottled | A taxa de solicitação excede o máximo permitido para a chave. | A taxa de solicitação excede a taxa máxima permitida de solicitação para uma única chave. |
KeyNotFound | A chave solicitada não existe. | A chave não existe. |
N/A | Não há páginas para avançar. | Este erro ocorre quando você chama Pages:AdvanceToNextPageAsync() na última página. |
Limitos
Modelos de dados têm limites .Se uma experiência exceder esses limites, o serviço reduz automaticamente o uso do armazenamento de dados da experiência e causa que solicitações futuras sejam colocadas em uma das seguintes filas:
- Estabelecer
- Set ordenado
- Pegue
- Comprou obter
Pedidos em uma fila são tratados na ordem em que são recebidos.A função chamada continua a renderizar enquanto sua solicitação ainda estiver na fila.Se a chave do armazenamento de dados for limitada, o pedido é colocado em uma fila, mas é temporariamente ignorado.
Cada fila tem um limite de 30 solicitações.Quando o limite de uma fila é atingido, as solicitações falham com um código de erro na faixa 301-306, indicando que as solicitações foram totalmente descartadas.
Limites do servidor
Cada servidor é permitido um certo número de solicitações de armazenamento de dados com base no tipo de solicitação e número de usuários.Use GetRequestBudgetForRequestType() para confirmar o número de solicitações de armazenamento de dados que o local atual pode fazer.
Para cada tipo de solicitação, o limite é compartilhado entre todas as funções listadas.
Tipo de solicitação | Funções | Pedidos por minuto |
---|---|---|
Pegue | GetAsync() | 60 + numJogadores × 10 |
Estabelecer | Class.GlobalDataStore:SetAsync()|SetAsync()``Class.GlobalDataStore:IncrementAsync()|IncrementAsync()``Class.GlobalDataStore:UpdateAsync()|UpdateAsync()``Class.GlobalDataStore:RemoveAsync()|RemoveAsync() | 60 + numJogadores × 10 |
Obtenha Ordenado | GetSortedAsync() | 5 + numJogadores × 2 |
Obter versão | Class.DataStore:GetVersionAsync()|GetVersionAsync()``Class.DataStore:GetVersionAtTimeAsync()|GetVersionAtTimeAsync() | 5 + numJogadores × 2 |
Lista | Class.DataStoreService:ListDataStoresAsync()|ListDataStoresAsync()``Class.DataStore:ListKeysAsync()|ListKeysAsync()``Class.DataStore:ListVersionsAsync()|ListVersionAsync() | 5 + numJogadores × 2 |
Remover | RemoveVersionAsync() | 5 + numJogadores × 2 |
Limites de dados
Armazenamentos de dados limitam quanto dados podem ser usados por entrada.
O nome do armazenamento de dados, o nome da chave e o escopo devem estar todos dentro de uma determinada comprimento de caracteres. Use string.len() para verificar seu comprimento.
Os dados (valor da chave) também são armazenados como uma string, independentemente de seu tipo inicial.Você pode verificar o tamanho dos dados com a função JSONEncode(), que converte dados Luau em uma tabela JSON serializada.
Componente | Número máximo de caracteres |
---|---|
Nome do armazenamento de dados | 50 |
Nome da chave | 50 |
Escopo | 50 |
Dados (valor da chave) | 4,194,304 por chave |
Limites de metadados
Limites ao número de caracteres no metadado definido pelo usuário.
Componente | Número máximo de caracteres |
---|---|
Nome da chave | 50 |
Valor | 250 |
Pares de chave-valor | 300 |
Limites de velocidade
Limites de velocidade por tecla garantem que o desempenho seja otimizado nos servidores do Roblox.Cada limite se aplica a cada chave única em todos os servidores em uma experiência e se atualiza ao longo do tempo.
O Roblox examina o uso da quota associada à chave nos últimos 60 segundos.Se o uso, incluindo o pedido atual, estiver dentro do limite de velocidade, o pedido é aprovado.Se o uso exceder o limite, o pedido é negado.
Tipo de solicitação | Limite |
---|---|
Ler | 25 MB por minuto |
Escrever | 4 MB por minuto |
Limites de armazenamento
Atualmente, não há limites de armazenamento forçados em armazenamentos de dados.