Solicitações que você faz a armazenamentos de dados podem falhar devido a baixa conectividade ou outros problemas. Para lidar com erros e retornar mensagens com um código de erro, envolva funções de 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 ser vazado. | Verifique se a entrada de chave na função de 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 de armazenamento de dados excede a comprimento de 50. | |
103 | ValueNotAllowed | Não é possível permitir X em DataStore. | Uma função de atualização ruim retornou um valor de tipo X. | |
104 | CantStoreValue | Não é possível armazenar X em DataStore. | A função de atualização retornou um valor de tipo X que não seria serializado. | |
105 | ValueTooLarge | O valor serializado excede o limite X. | Se você estiver definindo um valor com SetAsync() ou UpdateAsync(), a comprimento serializada do valor não pode exceder o tamanho X. Para verificar a comprimento serializada dos dados, use 1> Class.HttpService:JSONEncode()|JSONEncode()1> . | |
106 | MaxValueInvalid | MaxValue deve ser um número integral. | Se você estiver passando um valor máximo para GetSortedAsync() para um OrderedDataStore, ele deve ser um número integral. | |
106 | MinValueInvalid | MinValue deve ser um número integral. | Se você estiver passando um valor mínimo para GetSortedAsync() para um OrderedDataStore, ele deve ser um número integral. | |
106 | PageSizeGreater | PageSize deve estar dentro de um alcance predefinido. | O tamanho mínimo de uma página para um OrderedDataStore é 1. | |
106 | PageSizeLesser | PageSize deve estar dentro de um alcance predefinido. | O tamanho máximo de uma página para um OrderedDataStore é 100. | |
107 | MinMaxOrderInvalid | MaxValue deve ser maior que ou igual a MinValue. | O valor máximo deve ser maior que ou igual ao valor mínimo para GetSortedAsync() . | |
301 | GetAsyncThrottle | GetAsync solicitação foi retirada. A solicitação foi limitada, 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 momento. | |
302 | SetAsyncThrottle | SetAsync solicitação foi retirada. A solicitação foi limitada, 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 momento. | |
303 | IncreAsyncThrottle | IncrementAsync solicitação foi retirada. A solicitação foi limitada, 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 momento. | |
304 | UpdateAsyncThrottle | UpdateAsync solicitação foi retirada. A solicitação foi limitada, 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 momento. | |
304 | TransformThrottle | UpdateAsync solicitação foi retirada. A solicitação foi limitada, 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 momento. | |
305 | GetSortedThrottle | GetSorted solicitação foi retirada. A solicitação foi limitada, 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 momento. | |
306 | RemoveAsyncThrottle | RemoveAsyncRemoveAsync . A solicitação foi reduzida, 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 momento. | |
401 | DataModelNoAccess | Solicitação falhou. DataModel está inacessível enquanto a experiência está sendo desligada. | DataModel não está inicializado porque a experiência está sendo desligada. | |
402 | LuaWebSrvsNoAccess | Solicitação falhou. LuaWebService está inacessível enquanto a experiência está sendo desligada. | LuaWebService não está inicializado porque a experiência está sendo desligada. | |
403 | StudioAccessToApisNotAllowed | Não pode escrever para DataStore a partir 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. Isso 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 pôde processar 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 a solicitação com erro X. | Ocorreu um erro X ao processar servidores Roblox. Tente novamente mais tarde. | |
503 | InternalError | A solicitação de armazenamento de dados foi bem-sucedida, 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 | A solicitação de armazenamento de dados foi bem-sucedida, mas a resposta não foi formatada corretamente. | O servidor não pôde processar a resposta à sua solicitar / pedir. Isso pode ser um sinal de corrupção de dados. Tente novamente mais tarde. | |
505 | InternalError | OrderedDataStore A solicitação foi bem-sucedida, mas a resposta não foi formatada corretamente. | O servidor não conseguiu analisar a resposta para sua solicitar / pedirde OrderedDataStore. Isso pode ser um sinal de corrupção de dados. Tente novamente mais tarde. | |
509 | OperationNotAllowed | As operações de armazenamento de dados são bloqueadas ao executar em um RCC Pessoal para evitar possíveis corrupções de dados. | Escritos de armazenamento de dados são bloqueados em canais RCC privados. | |
511 | AttributeSizeTooLarge | O tamanho do atributo metadado excede o limite X. | O tamanho do método serializado excede o limite de X. O valor X é dinâmico. Se o tamanho for alterado, o valor também será alterado. | |
512 | UserIdLimitExceeded | UserID tamanho excede o limite X. | A extensão dos IDs de usuário fornecidos pelo usuário excede o limite de X. | |
513 | AttributeFormatError | O formato 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 método não é uma tabela. | |
GetVersionAsyncThrottle | GetVersionAsync solicitação foi retirada. A solicitação foi limitada. | GetVersionAsync() A solicitação excedeu o tamanho máximo da fila e o Roblox não pode processar as solicitações no momento. | ||
ListDataStoresAsyncThrottle | ListDataStoresAsync pedido foi solto. A solicitação foi limitada. | ListDataStoresAsync() A solicitação excedeu o tamanho máximo da fila e o Roblox não pode processar as solicitações no momento. | ||
ListKeysAsyncThrottle | ListKeysAsync solicitação foi retirada. A solicitação foi limitada. | ListKeysAsync() A solicitação excedeu o tamanho máximo da fila e o Roblox não pode processar as solicitações no momento. | ||
ListVersionsAsyncThrottle | ListVersionsAsync solicitação foi retirada. A solicitação foi limitada. | ListVersionsAsync() A solicitação excedeu o tamanho máximo da fila e o Roblox não pode processar as solicitações no momento. | ||
RemoveVersionAsyncThrottle | RemoveVersionAsync solicitação foi retirada. A solicitação foi limitada. | RemoveVersionAsync() A solicitação excedeu o tamanho máximo da fila e o Roblox não pode processar as solicitações no momento. |
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 em servidores do Roblox. Tente novamente, idealmente com backoff exponencial. |
InvalidPlace | O local fornecido é inválido. | Nenhum ID do Universo correspondente para o local. Tente novamente mais tarde. |
InvalidTarget | O alvo fornecido é inválido. | O nome da chave do Data Store pedido excede o limite de 50 caracteres. |
InvalidUniverse | O universo fornecido é inválido. | Nenhum 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 de solicitação máxima permitida para uma única chave. |
KeyNotFound | A chave solicitada não existe. | A chave não existe. |
N/A | Nenhuma página para avançar. | Este erro ocorre quando você chama Pages:AdvanceToNextPageAsync() na última página. |
Limites
Modelos de dados têm limites . Se uma experiência exceder esses limites, o serviço automaticamente reduz o uso do armazenamento de dados da experiência e causa solicitações futuras a serem colocadas em uma das seguintes filas:
- Definir
- configurarencomendado
- Obter
- Pedido de obtenção
Solicitações em uma fila são processadas na ordem em que são recebidas. A função chamada continua a retornar até que sua solicitação ainda esteja na fila. Se o valor da chave do armazenamento de dados for estrangulado, a solicitação será colocada na fila, mas será temporariamente pular.
Cada fila tem um limite de 30 pedidos. Quando o limite de uma fila for atingido, pedidos falharão com um código de erro na faixa 301-306, indicando que os pedidos foram totalmente descartados.
Limites do Servidor
Cada servidor é permitido um determinado 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.
Tipo de solicitação | Funções | Solicitações por Minuto |
---|---|---|
Obter | GetAsync() | 60 + numJogadores × 10 |
Definir (o limite é compartilhado entre todas as funções listadas) | SetAsync() Class.GlobalDataStore:IncrementAsync()|IncrementAsync() Class.GlobalDataStore:UpdateAsync()|UpdateAsync() 0> Class.GlobalDataStore:RemoveAsync()|RemoveAsync()0> | 60 + numJogadores × 10 |
Separar | GetSortedAsync() | 5 + numJogadores × 2 |
Obter Versão | GetVersionAsync() | 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
Os armazenamentos de dados limitam o quanto de dados pode ser usado por entrada.
O nome do armazenamento de dados, o nome da chave e o alcance devem todos estar sob uma certa 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 Lua em uma tabela JSON serializada.
Componente | Número Máximo de Personagens |
---|---|
Nome do Armazenamento de Dados | 50 |
Nome da Chave | 50 |
Mira | 50 |
Dados (Valor da Chave) | 4.194.304 por chave |
Limites de Metadados
Limites para o número de caracteres em metadados de usuário.
Componente | Número Máximo de Personagens |
---|---|
Nome da Chave | 50 |
Valor | 250 |
Pares de Valor da Chave | 300 |
Limites de Estrangulamento
Limites de produção por chave garantem que o desempenho seja otimizado em servidores do Roblox. Cada limite se aplica a cada uma das chaves em todos os servidores em uma experiência e atualiza ao longo do tempo.
O Roblox exibe o uso de quota associado à chave nos últimos 60 segundos. Se o uso, incluindo a solicitar / pediratual, estiver dentro do limite de produção, a solicitação será aprovada. Se o uso exceder o limite, a solicitação será rejeitada.
Tipo de solicitação | Limite |
---|---|
Leitura | 25 MB por minuto |
Escreva | 4 MB por minuto |