Las solicitudes que realiza a los almacenes de datos pueden fallar debido a una mala conectividad o otros problemas. Para manejar errores y devolver mensajes con un código de error, envuelve las funciones de almacenamiento de datos en pcall() .
Referencia del código de error
Código de error | Nombre de error | Mensaje de error | Notas | |
---|---|---|---|---|
101 | KeyNameEmpty | El nombre de la clave no puede quedar vacío. | Compruebe si la clave ingresa 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 la clave en la función de almacenamiento de datos supera una longitud de 50. | |
103 | ValueNotAllowed | No se puede permitir X en DataStore . | Una mala función de actualización devolvió un valor de tipo X . | |
104 | CantStoreValue | No se puede almacenar X en DataStore . | 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 de X. | Si estás configurando un valor con SetAsync() o UpdateAsync(), la longitud serializada del valor no puede exceder el tamaño X . Para comprobar la longitud serializada de los datos, usa 1> Class.HttpService:JSONEncode()|JSONEncode()1> . | |
106 | MaxValueInvalid | MaxValue debe ser un número entero. | Si está pasando un valor máximo a GetSortedAsync() para un OrderedDataStore, debe ser un número entero. | |
106 | MinValueInvalid | MinValue debe ser un número entero. | Si estás pasando un valor mínimo a GetSortedAsync() para un OrderedDataStore, debe ser un número entero. | |
106 | PageSizeGreater | PageSize debe estar dentro de un rango predeterminado. | El tamaño mínimo de la página para un OrderedDataStore es 1. | |
106 | PageSizeLesser | PageSize debe estar dentro de un rango predeterminado. | El tamaño máximo de la página para un OrderedDataStore es 100. | |
107 | MinMaxOrderInvalid | MaxValue debe ser mayor que o igual a MinValue . | El valor máximo debe ser mayor o igual que el valor mínimo para GetSortedAsync() . | |
301 | GetAsyncThrottle | GetAsync solicitud caída. La solicitud fue limitada, pero la cola estaba llena. | GetAsync() la solicitud ha excedido el tamaño máximo de la cola y Roblox no puede procesar las solicitudes en el momento actual a través de la capacidad actual. | |
302 | SetAsyncThrottle | SetAsync solicitud caída. La solicitud fue limitada, pero la cola estaba llena. | SetAsync() la solicitud ha excedido el tamaño máximo de la cola y Roblox no puede procesar las solicitudes en el momento actual a través de la capacidad actual. | |
303 | IncreAsyncThrottle | IncrementAsync solicitud caída. La solicitud fue limitada, pero la cola estaba llena. | IncrementAsync() la solicitud ha excedido el tamaño máximo de la cola y Roblox no puede procesar las solicitudes en el momento actual a través de la capacidad actual. | |
304 | UpdateAsyncThrottle | UpdateAsync solicitud de actualización se ha caído. La solicitud se ha acelerado, pero la cola estaba llena. | UpdateAsync() la solicitud ha excedido el tamaño máximo de la cola y Roblox no puede procesar las solicitudes en el momento actual a través de la capacidad actual. | |
304 | TransformThrottle | UpdateAsync solicitud de actualización se ha caído. La solicitud se ha acelerado, pero la cola estaba llena. | UpdateAsync() la solicitud ha excedido el tamaño máximo de la cola y Roblox no puede procesar las solicitudes en el momento actual a través de la capacidad actual. | |
305 | GetSortedThrottle | GetSorted solicitud se ha caído. La solicitud fue limitada, pero la cola estaba llena. | GetSortedAsync() la solicitud ha excedido el tamaño máximo de la cola y Roblox no puede procesar las solicitudes en el momento actual a través de la capacidad actual. | |
306 | RemoveAsyncThrottle | RemoveAsync solicitud se cayó. La solicitud fue limitada, pero la cola estaba llena. | RemoveAsync() la solicitud ha excedido el tamaño máximo de la cola y Roblox no puede procesar las solicitudes en el momento actual a través de la capacidad actual. | |
401 | DataModelNoAccess | Solicitud fallida. DataModel no está disponible mientras se cierra la experiencia. | DataModel no se inicializa porque la experiencia se está cerrando. | |
402 | LuaWebSrvsNoAccess | Solicitud fallida. LuaWebService no está disponible mientras se cierra la experiencia. | LuaWebService no se inicializa 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 activado para usar los almacenes de datos en Studio. | |
404 | InternalError | OrderedDataStore no existe. | No se ha encontrado el OrderedDataStore asociado con esta solicitud. Esto puede deberse a un error de datos. Inténtalo de nuevo más tarde. | |
501 | InternalError | No se puede analizar la respuesta porque los datos podrían estar corruptos. | El servidor no pudo procesar la respuesta a su solicitud. Esto puede ser un signo de corrupción de datos. Inténtalo de nuevo más tarde. | |
502 | RequestRejected | API Services rechazó la solicitud con error X . | Se ha producido un error X al procesar en servidores de Roblox. Inténtalo de nuevo más tarde. | |
503 | InternalError | La solicitud de almacenamiento de datos fue exitosa, pero la clave no se encontró. | La clave solicitada no se encontró en el almacén de datos. Esto podría ser un signo de corrupción de datos. Inténtalo de nuevo más tarde. | |
504 | InternalError | La solicitud de almacenamiento de datos fue exitosa, pero la respuesta no se formato correctamente. | El servidor no pudo procesar la respuesta a su solicitud. Esto puede ser un signo de corrupción de datos. Inténtalo de nuevo más tarde. | |
505 | InternalError | OrderedDataStore petición fue exitosa, pero la respuesta no se formato correctamente. | El servidor no pudo procesar la respuesta a su solicitud de OrderedDataStore. Esto puede ser un signo de corrupción de datos. Inténtalo de nuevo más tarde. | |
509 | OperationNotAllowed | Las operaciones de almacenamiento de datos están bloqueadas mientras se ejecuta en un Personal RCC para evitar posibles daños de datos. | Las escribidas de almacenamiento de datos se bloquean en los canales RCC privados. | |
511 | AttributeSizeTooLarge | El tamaño de atributo de metadatos supera el límite de 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 de los ID de usuario proporcionados por el usuario excede 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 atributos no es válido. | El metadato no es una tabla. | |
GetVersionAsyncThrottle | GetVersionAsync solicitud caída. La solicitud fue limitada. | GetVersionAsync() la solicitud ha excedido el tamaño máximo de la cola y Roblox no puede procesar las solicitudes en el momento actual a través de la capacidad actual. | ||
ListDataStoresAsyncThrottle | ListDataStoresAsync solicitud caída. La solicitud fue limitada. | ListDataStoresAsync() la solicitud ha excedido el tamaño máximo de la cola y Roblox no puede procesar las solicitudes en el momento. | ||
ListKeysAsyncThrottle | ListKeysAsync solicitud caída. La solicitud fue limitada. | ListKeysAsync() La solicitud ha excedido el tamaño máximo de la cola y Roblox no puede procesar las solicitudes en el momento actual a través de la capacidad actual. | ||
ListVersionsAsyncThrottle | ListVersionsAsync solicitud caída. La solicitud fue limitada. | ListVersionsAsync() La solicitud ha excedido el tamaño máximo de la cola y Roblox no puede procesar las solicitudes en el momento actual a través de la capacidad actual. | ||
RemoveVersionAsyncThrottle | RemoveVersionAsync solicitud caída. La solicitud fue limitada. | RemoveVersionAsync() la solicitud ha excedido el tamaño máximo de la cola y Roblox no puede procesar las solicitudes en el momento actual a través de la capacidad actual. |
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 | Se ha producido un error interno del servidor. | Error ocasional en los servidores de Roblox. Inténtalo de nuevo, idealmente con un backoff exponencial. |
InvalidPlace | El lugar proporcionado no es no válido. | No se ha encontrado ningún ID de universo para el lugar. Inténtalo de nuevo más tarde. |
InvalidTarget | El objetivo proporcionado no es no válido. | El nombre de la llave de almacén de datos pedida supera el límite de 50 caracteres. |
InvalidUniverse | El universo proporcionado no es no válido. | No se ha encontrado el ID de un lugar para el universo. Inténtalo de nuevo más tarde. |
InvalidUserIds | Los ID de usuario proporcionados tienen un formato inválido. | No se pudo procesar los ID de usuario. |
KeyThrottled | La tasa de solicitudes supera el máximo permitido para la clave. | La tasa de solicitudes supera el máximo de tasa de solicitudes permitida 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 a Pages:AdvanceToNextPageAsync() en la última página. |
Límites
Los modelos de datos tienen límites . Si una experiencia supera estos límites, el servicio automáticamente reduce el uso del almacén de datos de la experiencia y causa que se coloquen futuras solicitudes en una de las siguientes colas:
- Configurar
- Conjunto establecer
- Obtener
- Ordenado get
Las solicitudes en una cola se manejan según el orden en que se reciben. La función llamada sigue produciendo hasta que su solicitud esté todavía en la cola. Si la llave del almacén de datos está 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 abandonado por completo.
Límites del servidor
Cada servidor está permitido un determinado número de solicitudes de almacenamiento de datos según el tipo de solicitud y el número de usuarios. Usa GetRequestBudgetForRequestType() para confirmar el número de solicitudes de almacenamiento de datos que el lugar actual puede hacer.
Tipo de solicitud | Funciones | Solicitudes por minuto |
---|---|---|
Obtener | GetAsync() | 60 + numJugadores × 10 |
Establecer (límite compartido entre todas las funciones listadas) | Class.GlobalDataStore:SetAsync()|SetAsync()``Class.GlobalDataStore:IncrementAsync()|IncrementAsync()``Class.GlobalDataStore:UpdateAsync()|UpdateAsync() 0> Class.GlobalDataStore:RemoveAsync()|RemoveAsync()0> | 60 + numJugadores × 10 |
Obtener clasificado | GetSortedAsync() | 5 + numJugadores × 2 |
Obtener la versión | GetVersionAsync() | 5 + numJugadores × 2 |
Lista | Class.DataStoreService:ListDataStoresAsync()|ListDataStoresAsync()``Class.DataStore:ListKeysAsync()|ListKeysAsync()``Class.DataStore:ListVersionsAsync()|ListVersionAsync() | 5 + numJugadores × 2 |
Quitar | RemoveVersionAsync() | 5 + numJugadores × 2 |
Límites de datos
Los almacenes de datos limitan la cantidad de datos que se pueden usar por entrada.
El nombre del almacén de datos, el nombre de la llave y alcance deben todos estar dentro de una cierta longitud de caracter. Usa string.len() para comprobar su longitud.
Los datos (valor de la llave) también se almacenan como una cadena, independientemente de su introducirinicial. Puedes ver el tamaño de los datos con la función JSONEncode(), que convierte los datos Lua en una tabla JSON serializada.
Componente | Número máximo de caracteres |
---|---|
Nombre del almacén de datos | 50 |
Nombre de la llave | 50 |
Mira | 50 |
Datos (valor de la llave) | 4,194,304 por clave |
Límites de metadatos
Límites para el número de caracteres en los metadatos de usuario.
Componente | Número máximo de caracteres |
---|---|
Nombre de la llave | 50 |
Valor | 250 |
Pares de valor clave | 300 |
Límites de rendimiento
Los límites de rendimiento por clave garantizan que el rendimiento sea óptimo en los servidores de Roblox. Cada límite se aplica a cada una de las claves en todos los servidores en una experiencia y se actualiza con el tiempo.
Roblox examina el uso de la cuota asociada con la llave 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 supera el límite, la solicitud se rechaza.
Tipo de solicitud | Límite |
---|---|
Leer | 25 MB por minuto |
Escriba | 4 MB por minuto |