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ódigode erro | Nome do erro | Mensagem de mensagem | 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 / cadeia / textovazia. | |
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 integral. | Se você estiver passando um valor máximo para GetSortedAsync() por um OrderedDataStore , deve ser um integral. | |
106 | MinValueInvalid | MinValue deve ser um integral. | Se você estiver passando um valor mínimo para GetSortedAsync() por um OrderedDataStore , deve ser um integral. | |
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 solicitar / pedir. 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 solicitar / pedir. 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 solicitar / pedirOrderedDataStore . 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 mensagem | 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
- configurarordenado
- 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.
digitarde solicitação | Funções | Pedidos por minuto |
---|---|---|
Pegue | GetAsync() | 60 + numJogadores × 10 |
Definir (o limite é compartilhado entre todas as funções listadas) | 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 / cadeia / texto, independentemente de seu digitarinicial.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 solicitar / pediratual, estiver dentro do limite de velocidade, o pedido é aprovado.Se o uso exceder o limite, o pedido é negado.
digitarde 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.