Las solicitudes que haces a los almacenes de datos pueden fallar debido a una mala conectividad o a otros problemas.Para manejar errores y devolver mensajes con un código de error, envuelve las funciones de almacenamiento de datos en pcall() .
Referencia de código de error
Código de error | Nombre de error | Mensaje de error | Notas | |
---|---|---|---|---|
101 | KeyNameEmpty | El nombre de la clave no puede estar vacío. | Compruebe si la entrada de clave en la función de almacenamiento de datos es una cadena vacía. | |
102 | KeyNameLimit | El nombre de la clave supera el límite de 50 caracteres. | Compruebe si la entrada de clave en la función de almacenamiento de datos supera una longitud de 50. | |
103 | ValueNotAllowed | No se puede permitir X en DataStore. | Una función de actualización incorrecta devolvió un valor de tipo X. | |
104 | CantStoreValue | No se puede almacenar X en >. | La función de actualización devolvió un valor de tipo X que no se serializó. | |
105 | ValueTooLarge | El valor serializado supera el límite X. | Si estás estableciendo un valor con SetAsync() o UpdateAsync(), la longitud serializada del valor no puede exceder el tamaño X.Para verificar la longitud serializada de los datos, use JSONEncode() . | |
106 | MaxValueInvalid | MaxValue debe ser un entero. | Si estás pasando un valor máximo a GetSortedAsync() para un OrderedDataStore , debe ser un entero. | |
106 | MinValueInvalid | MinValue debe ser un entero. | Si estás pasando un valor mínimo a GetSortedAsync() para un OrderedDataStore , debe ser un entero. | |
106 | PageSizeGreater | PageSize debe estar dentro de un rango predefinido. | El tamaño mínimo de página para un OrderedDataStore es 1. | |
106 | PageSizeLesser | PageSize debe estar dentro de un rango predefinido. | El tamaño máximo de página para un OrderedDataStore es de 100. | |
107 | MinMaxOrderInvalid | MaxValue debe ser mayor o igual a MinValue. | El valor máximo debe ser mayor o igual al valor mínimo para GetSortedAsync() . | |
301 | GetAsyncThrottle | GetAsync solicitud descartada. La solicitud se vio limitada, pero la cola estaba llena. | GetAsync() la solicitud ha superado el tamaño máximo de la cola y Roblox no puede procesar las solicitudes en la velocidad actual. | |
302 | SetAsyncThrottle | SetAsync solicitud descartada. La solicitud se vio limitada, pero la cola estaba llena. | SetAsync() la solicitud ha superado el tamaño máximo de la cola y Roblox no puede procesar las solicitudes en la velocidad actual. | |
303 | IncreAsyncThrottle | IncrementAsync solicitud descartada. La solicitud se vio limitada, pero la cola estaba llena. | IncrementAsync() la solicitud ha superado el tamaño máximo de la cola y Roblox no puede procesar las solicitudes en la velocidad actual. | |
304 | UpdateAsyncThrottle | UpdateAsync solicitud descartada. La solicitud se vio limitada, pero la cola estaba llena. | UpdateAsync() la solicitud ha superado el tamaño máximo de la cola y Roblox no puede procesar las solicitudes en la velocidad actual. | |
304 | TransformThrottle | UpdateAsync solicitud descartada. La solicitud se vio limitada, pero la cola estaba llena. | UpdateAsync() la solicitud ha superado el tamaño máximo de la cola y Roblox no puede procesar las solicitudes en la velocidad actual. | |
305 | GetSortedThrottle | GetSorted solicitud descartada. La solicitud se vio limitada, pero la cola estaba llena. | GetSortedAsync() la solicitud ha superado el tamaño máximo de la cola y Roblox no puede procesar las solicitudes en la velocidad actual. | |
306 | RemoveAsyncThrottle | RemoveAsync solicitud descartada. La solicitud se vio limitada, pero la cola estaba llena. | RemoveAsync() la solicitud ha superado el tamaño máximo de la cola y Roblox no puede procesar las solicitudes en la velocidad actual. | |
401 | DataModelNoAccess | Solicitud fallida. DataModel no es accesible mientras la experiencia se está cerrando. | DataModel no está inicializado porque la experiencia se está cerrando. | |
402 | LuaWebSrvsNoAccess | Solicitud fallida. LuaWebService no es accesible mientras la experiencia se está cerrando. | LuaWebService no está inicializado porque la experiencia se está cerrando. | |
403 | StudioAccessToApisNotAllowed | No se puede escribir en DataStore desde Studio porque el acceso a la API no está habilitado. | El acceso a la API debe estar activo para usar almacenes de datos en Studio. | |
404 | InternalError | OrderedDataStore no existe. | No se encontró el OrderedDataStore asociado con esta solicitud. Esto podría ser una señal de corrupción de datos. Inténtalo de nuevo más tarde. | |
501 | InternalError | No se puede analizar la respuesta porque los datos pueden estar dañados. | El servidor no pudo analizar la respuesta a tu solicitud. Esto podría ser una señal de corrupción de datos. Inténtalo de nuevo más tarde. | |
502 | RequestRejected | Los servicios API rechazaron la solicitud con error X. | Se produjo un error X al procesar en los servidores de Roblox. Inténtalo de nuevo más tarde. | |
503 | InternalError | La solicitud de almacén de datos tuvo éxito, pero no se encontró la clave. | La clave solicitada no se encontró en el almacén de datos. Esto podría ser una señal de corrupción de datos. Inténtalo de nuevo más tarde. | |
504 | InternalError | La solicitud de almacén de datos tuvo éxito, pero la respuesta no se formató correctamente. | El servidor no pudo analizar la respuesta a tu solicitud. Esto podría ser una señal de corrupción de datos. Inténtalo de nuevo más tarde. | |
505 | InternalError | OrderedDataStore la solicitud fue exitosa, pero la respuesta no se formató correctamente. | El servidor no pudo analizar la respuesta a tu solicitud OrderedDataStore . Esto podría ser una señal de corrupción de datos. Inténtalo de nuevo más tarde. | |
509 | OperationNotAllowed | Las operaciones de almacén de datos se bloquean mientras se ejecutan en un RCC personal para prevenir la posible corrupción de datos. | Las escrituras del almacén de datos se bloquean en canales RCC privados. | |
511 | AttributeSizeTooLarge | El tamaño del atributo de metadatos supera el límite X. | El tamaño de los metadatos serializados supera el límite de X. El valor X es dinámico. Si el tamaño cambia, el valor también cambia. | |
512 | UserIdLimitExceeded | UserID el tamaño supera el límite X. | La longitud del array de ID de usuario proporcionado por el usuario supera el límite de X. | |
513 | AttributeFormatError | El formato de atributo userId no es válido. | El ID de usuario proporcionado no es un número. | |
513 | AttributeFormatError | El formato de metadatos de atributos no es válido. | El metadato no es una tabla. | |
GetVersionAsyncThrottle | GetVersionAsync solicitud descartada.La solicitud se aceleró.: | GetVersionAsync() la solicitud ha superado el tamaño máximo de la cola y Roblox no puede procesar las solicitudes en la velocidad actual. | ||
GetVersionAtTimeAsyncThrottle | GetVersionAtTimeAsync solicitud descartada.La solicitud se aceleró.: | GetVersionAtTimeAsync() la solicitud ha superado el tamaño máximo de la cola y Roblox no puede procesar las solicitudes en la velocidad actual. | ||
ListDataStoresAsyncThrottle | ListDataStoresAsync solicitud descartada.La solicitud se aceleró.: | ListDataStoresAsync() la solicitud ha superado el tamaño máximo de la cola y Roblox no puede procesar las solicitudes en la velocidad actual. | ||
ListKeysAsyncThrottle | ListKeysAsync solicitud descartada.La solicitud se aceleró.: | ListKeysAsync() la solicitud ha superado el tamaño máximo de la cola y Roblox no puede procesar las solicitudes en la velocidad actual. | ||
ListVersionsAsyncThrottle | ListVersionsAsync solicitud descartada.La solicitud se aceleró.: | ListVersionsAsync() la solicitud ha superado el tamaño máximo de la cola y Roblox no puede procesar las solicitudes en la velocidad actual. | ||
RemoveVersionAsyncThrottle | RemoveVersionAsync solicitud descartada.La solicitud se aceleró.: | RemoveVersionAsync() la solicitud ha superado el tamaño máximo de la cola y Roblox no puede procesar las solicitudes en la velocidad actual. | ||
InvalidTimestamp | La fecha y hora debe ser positiva y no más de diez minutos en el futuro.: | La fecha y hora proporcionada a GetVersionAtTimeAsync() no era válida. |
Códigos de error del servidor
Nombre de error | Mensaje de error | Notas |
---|---|---|
DatastoreThrottled | La tasa de solicitudes supera el máximo permitido para el datastore. | Demasiadas solicitudes se enviaron a un solo almacén de datos. |
InternalServerError | Ocurrió un error interno del servidor. | Error ocasional en los servidores de Roblox. Inténtalo de nuevo, idealmente con retroceso exponencial. |
InvalidPlace | El lugar proporcionado no es válido. | No hay una ID de universo coincidente para el lugar. Inténtalo de nuevo más tarde. |
InvalidTarget | El objetivo proporcionado no es válido. | El nombre de la clave del almacén de datos ordenado supera el límite de 50 caracteres. |
InvalidUniverse | El universo proporcionado no es válido. | No hay una ID de lugar coincidente para el universo. Inténtalo de nuevo más tarde. |
InvalidUserIds | Los ID de usuario proporcionados tienen un formato inválido. | No se pudieron analizar las ID de usuario. |
KeyThrottled | La tasa de solicitudes supera el máximo permitido para la clave. | La tasa de solicitudes supera la tasa máxima permitida de solicitudes para una sola clave. |
KeyNotFound | La clave solicitada no existe. | La clave no existe. |
N/A | No hay páginas para avanzar. | Este error ocurre cuando llamas Pages:AdvanceToNextPageAsync() a la última página. |
Límites
Los modelos de datos tienen límites .Si una experiencia supera estos límites, el servicio reduce automáticamente el uso del almacén de datos de la experiencia y causa que las solicitudes futuras se coloquen en una de las siguientes colas:
- Establecer
- Conjunto ordenado
- Obtener
- Obtenido ordenado
Las solicitudes en una cola se manejan en el orden en que se reciben.La función llamada sigue produciendo mientras su solicitud siga en cola.Si la clave del almacén de datos se ve limitada, la solicitud se coloca en una cola pero se omite temporalmente.
Cada cola tiene un límite de 30 solicitudes.Cuando se alcanza el límite de una cola, las solicitudes fallan con un código de error en el rango 301-306, lo que indica que las solicitudes se han eliminado por completo.
Límites del servidor
A cada servidor se le permite un cierto número de solicitudes de almacén de datos en función del tipo de solicitud y del número de usuarios.Usa GetRequestBudgetForRequestType() para confirmar el número de solicitudes de almacén de datos que el lugar actual puede hacer.
Para cada tipo de solicitud, el límite se comparte entre todas las funciones enumeradas.
Tipo de solicitud | Funciones | Solicitudes por minuto |
---|---|---|
Obtener | GetAsync() | 60 + numPlayers × 10 |
Establecer | Class.GlobalDataStore:SetAsync()|SetAsync()``Class.GlobalDataStore:IncrementAsync()|IncrementAsync()``Class.GlobalDataStore:UpdateAsync()|UpdateAsync()``Class.GlobalDataStore:RemoveAsync()|RemoveAsync() | 60 + numPlayers × 10 |
Obtener ordenado | GetSortedAsync() | 5 + numPlayers × 2 |
Obtener versión | Class.DataStore:GetVersionAsync()|GetVersionAsync()``Class.DataStore:GetVersionAtTimeAsync()|GetVersionAtTimeAsync() | 5 + numPlayers × 2 |
Lista | Class.DataStoreService:ListDataStoresAsync()|ListDataStoresAsync()``Class.DataStore:ListKeysAsync()|ListKeysAsync()``Class.DataStore:ListVersionsAsync()|ListVersionAsync() | 5 + numPlayers × 2 |
Quitar | RemoveVersionAsync() | 5 + numPlayers × 2 |
Limitaciones de datos
Las tiendas de datos limitan la cantidad de datos que se pueden usar por entrada.
El nombre del almacén de datos, el nombre de la clave y el alcance deben estar todos dentro de una cierta longitud de caracteres. Usa string.len() para comprobar su longitud.
Los datos (valor de clave) también se almacenan como una cadena, independientemente de su tipo inicial.Puedes verificar el tamaño de los datos con la función JSONEncode(), que convierte los datos de Luau en una tabla JSON serializada.
Componente | Número máximo de caracteres |
---|---|
Nombre del almacén de datos | 50 |
Nombre de clave | 50 |
Alcance | 50 |
Datos (valor de clave) | 4,194,304 por clave |
Límites de metadatos
Límites al número de caracteres en el metadato definido por el usuario.
Componente | Número máximo de caracteres |
---|---|
Nombre de clave | 50 |
Valor | 250 |
Pares de clave-valor | 300 |
Límites de rendimiento
Los límites de rendimiento por tecla garantizan que el rendimiento sea óptimo en los servidores de Roblox.Cada límite se aplica a cada clave única en todos los servidores en una experiencia y se actualiza con el tiempo.
Roblox examina el uso de la cuota asociada con la clave en los últimos 60 segundos.Si el uso, incluida la solicitud actual, está dentro del límite de rendimiento, la solicitud se aprueba.Si el uso excede el límite, la solicitud se rechaza.
Tipo de solicitud | Límite |
---|---|
Leer | 25 MB por minuto |
Escribir | 4 MB por minuto |
Limites de almacenamiento
Actualmente, no hay límites de almacenamiento forzados en las tiendas de datos.