Les demandes que vous faites aux magasins de données peuvent échouer en raison d'une mauvaise connectivité ou d'autres problèmes.Pour gérer les erreurs et renvoyer des messages avec un code d'erreur, enveloppez les fonctions de stockage de données dans pcall() .
Référence au code d'erreur
coded'erreur | Nom de l'erreur | Message d'message | Notations | |
---|---|---|---|---|
101 | KeyNameEmpty | Le nom de clé ne peut pas être vide. | Vérifiez si l'entrée de clé dans la fonction de stockage de données est une chaîne vide. | |
102 | KeyNameLimit | Le nom de clé dépasse la limite de 50 caractères. | Vérifiez si l'entrée de clé dans la fonction de stockage de données dépasse une longueur de 50. | |
103 | ValueNotAllowed | Impossible d'autoriser X dans DataStore. | Une mauvaise fonction de mise à jour a renvoyé une valeur de type X. | |
104 | CantStoreValue | Impossible de stocker X dans >. | La fonction de mise à jour a retourné une valeur de type X qui n'a pas été sérialisée. | |
105 | ValueTooLarge | La valeur sérialisée dépasse la limite X. | Si vous définissez une valeur avec SetAsync() ou UpdateAsync(), la longueur sérialisée de la valeur ne peut pas dépasser la taille X.Pour vérifier la longueur sérialisée des données, utilisez JSONEncode() . | |
106 | MaxValueInvalid | MaxValue doit être un entier. | Si vous transmettez une valeur maximale à GetSortedAsync() pour un OrderedDataStore, elle doit être un entier. | |
106 | MinValueInvalid | MinValue doit être un entier. | Si vous transmettez une valeur minimale à GetSortedAsync() pour un OrderedDataStore, elle doit être un entier. | |
106 | PageSizeGreater | PageSize doit être dans une plage prédéfinie. | La taille minimale de la page pour un OrderedDataStore est de 1. | |
106 | PageSizeLesser | PageSize doit être dans une plage prédéfinie. | La taille maximale de la page pour un OrderedDataStore est de 100. | |
107 | MinMaxOrderInvalid | MaxValue doit être supérieur ou égal à MinValue. | La valeur maximale doit être supérieure ou égale à la valeur minimale pour GetSortedAsync() . | |
301 | GetAsyncThrottle | GetAsync demande abandonnée. La demande a été limitée, mais la file d'attente était pleine. | GetAsync() la demande a dépassé la taille maximale de la file d'attente et Roblox est incapable de traiter les demandes au débit actuel. | |
302 | SetAsyncThrottle | SetAsync demande abandonnée. La demande a été limitée, mais la file d'attente était pleine. | SetAsync() la demande a dépassé la taille maximale de la file d'attente et Roblox est incapable de traiter les demandes au débit actuel. | |
303 | IncreAsyncThrottle | IncrementAsync demande abandonnée. La demande a été limitée, mais la file d'attente était pleine. | IncrementAsync() la demande a dépassé la taille maximale de la file d'attente et Roblox est incapable de traiter les demandes au débit actuel. | |
304 | UpdateAsyncThrottle | UpdateAsync demande abandonnée. La demande a été limitée, mais la file d'attente était pleine. | UpdateAsync() la demande a dépassé la taille maximale de la file d'attente et Roblox est incapable de traiter les demandes au débit actuel. | |
304 | TransformThrottle | UpdateAsync demande abandonnée. La demande a été limitée, mais la file d'attente était pleine. | UpdateAsync() la demande a dépassé la taille maximale de la file d'attente et Roblox est incapable de traiter les demandes au débit actuel. | |
305 | GetSortedThrottle | GetSorted demande abandonnée. La demande a été limitée, mais la file d'attente était pleine. | GetSortedAsync() la demande a dépassé la taille maximale de la file d'attente et Roblox est incapable de traiter les demandes au débit actuel. | |
306 | RemoveAsyncThrottle | RemoveAsync demande abandonnée. La demande a été limitée, mais la file d'attente était pleine. | RemoveAsync() la demande a dépassé la taille maximale de la file d'attente et Roblox est incapable de traiter les demandes au débit actuel. | |
401 | DataModelNoAccess | La demande a échoué. DataModel est inaccessible pendant que l'expérience est en train de s'arrêter. | DataModel n'est pas initialisé car l'expérience est en train de s'arrêter. | |
402 | LuaWebSrvsNoAccess | La demande a échoué. LuaWebService est inaccessible pendant que l'expérience est en train de s'arrêter. | LuaWebService n'est pas initialisé car l'expérience est en train de s'arrêter. | |
403 | StudioAccessToApisNotAllowed | Impossible d'écrire à DataStore depuis Studio car l'accès à l'API n'est pas activé. | L'accès à l'API doit être actif pour utiliser les magasins de données dans Studio. | |
404 | InternalError | OrderedDataStore n'existe pas. | Le OrderedDataStore associé à cette demande n'a pas été trouvé. Cela pourrait être un signe de corruption des données. Réessayez plus tard. | |
501 | InternalError | Impossible d'analyser la réponse car les données pourraient être corrompues. | Le serveur n'a pas pu analyser la réponse à votre demande. Cela pourrait être un signe de corruption des données. Réessayez plus tard. | |
502 | RequestRejected | Les services API ont rejeté la demande avec l'erreur X. | L'erreur X s'est produite lors du traitement sur les serveurs Roblox. Réessayez plus tard. | |
503 | InternalError | La demande de stockage de données a été réussie, mais la clé n'a pas été trouvée. | La clé demandée n'a pas été trouvée dans le magasin de données. Cela pourrait être un signe de corruption des données. Réessayez plus tard. | |
504 | InternalError | La demande de magasin de données a été réussie, mais la réponse n'a pas été formatée correctement. | Le serveur n'a pas pu analyser la réponse à votre demande. Cela pourrait être un signe de corruption des données. Réessayez plus tard. | |
505 | InternalError | OrderedDataStore la demande a réussi, mais la réponse n'a pas été formatée correctement. | Le serveur n'a pas pu analyser la réponse à votre demandeOrderedDataStore. Cela pourrait être un signe de corruption des données. Réessayez plus tard. | |
509 | OperationNotAllowed | Les opérations de magasin de données sont bloquées lorsqu'elles fonctionnent sur un RCC personnel pour empêcher toute corruption de données possible. | Les écritures du magasin de données sont bloquées sur les canaux RCC privés. | |
511 | AttributeSizeTooLarge | La taille de l'attribut métadonnées dépasse la limite X. | La taille des métadonnées sérialisées dépasse la limite de X. La valeur X est dynamique. Si la taille change, la valeur change également. | |
512 | UserIdLimitExceeded | UserID la taille dépasse la limite X. | La longueur de l'ensemble d'ID d'utilisateur fourni par l'utilisateur dépasse la limite de X. | |
513 | AttributeFormatError | Le format d'attribut userId n'est invalide. | L'ID utilisateur fourni n'est pas un nombre. | |
513 | AttributeFormatError | Le format de métadonnées d'attribut n'est invalide. | Les métadonnées ne sont pas une table. | |
GetVersionAsyncThrottle | GetVersionAsync requête abandonnée.La demande a été limitée.: | GetVersionAsync() La demande a dépassé la taille maximale de la file d'attente et Roblox n'est pas en mesure de traiter les demandes au débit actuel. | ||
GetVersionAtTimeAsyncThrottle | GetVersionAtTimeAsync requête abandonnée.La demande a été limitée.: | GetVersionAtTimeAsync() La demande a dépassé la taille maximale de la file d'attente et Roblox n'est pas en mesure de traiter les demandes au débit actuel. | ||
ListDataStoresAsyncThrottle | ListDataStoresAsync requête abandonnée.La demande a été limitée.: | ListDataStoresAsync() La demande a dépassé la taille maximale de la file d'attente et Roblox n'est pas en mesure de traiter les demandes au débit actuel. | ||
ListKeysAsyncThrottle | ListKeysAsync requête abandonnée.La demande a été limitée.: | ListKeysAsync() La demande a dépassé la taille maximale de la file d'attente et Roblox n'est pas en mesure de traiter les demandes au débit actuel. | ||
ListVersionsAsyncThrottle | ListVersionsAsync requête abandonnée.La demande a été limitée.: | ListVersionsAsync() La demande a dépassé la taille maximale de la file d'attente et Roblox n'est pas en mesure de traiter les demandes au débit actuel. | ||
RemoveVersionAsyncThrottle | RemoveVersionAsync requête abandonnée.La demande a été limitée.: | RemoveVersionAsync() La demande a dépassé la taille maximale de la file d'attente et Roblox n'est pas en mesure de traiter les demandes au débit actuel. | ||
InvalidTimestamp | La date et l'heure d'expiration doivent être positives et ne pas dépasser dix minutes dans le futur.: | La date d'expiration fournie à GetVersionAtTimeAsync() n'était pas valide. |
Codes d'erreur du serveur
Nom de l'erreur | Message d'message | Notations |
---|---|---|
DatastoreThrottled | Le taux de demande dépasse le maximum autorisé pour le datastore. | Trop de demandes ont été envoyées à un seul magasin de données. |
InternalServerError | Une erreur interne du serveur s'est produite. | Erreur occasionnelle sur les serveurs Roblox. Réessayez, idéalement avec un retrait exponentiel. |
InvalidPlace | L'endroit fourni n'est invalide. | Pas d'ID d'univers correspondant pour l'emplacement. Réessayez plus tard. |
InvalidTarget | La cible fournie n'est invalide. | Le nom de clé du magasin de données ordonné dépasse la limite de 50 caractères. |
InvalidUniverse | L'univers fourni n'est invalide. | Pas d'ID de lieu correspondant pour l'univers. Réessayez plus tard. |
InvalidUserIds | Les ID d'utilisateur fournis ont un format non valide. | Échec de l'analyse des identifiants d'utilisateur. |
KeyThrottled | Le taux de demande dépasse le maximum autorisé pour la clé. | Le taux de demande dépasse le taux de demande maximum autorisé pour une seule clé. |
KeyNotFound | La clé demandée n'existe pas. | La clé n'existe pas. |
N/A | Aucune page à avancer vers. | Cette erreur se produit lorsque vous appelez Pages:AdvanceToNextPageAsync() sur la dernière page. |
Limites
Les modèles de données ont des limites .Si une expérience dépasse ces limites, le service limite automatiquement l'utilisation du magasin de données de l'expérience et cause des demandes futures à être placées dans l'une des files d'attente suivantes :
- Définir
- Ensemble configurer
- Obtenir
- Commande obtenue
Les demandes dans une file d'attente sont traitées dans l'ordre dans lequel elles sont reçues.La fonction appelée continue de produire tant que sa demande est toujours en attente.Si la clé du magasin de données elle-même est limitée, la demande est placée dans une file d'attente mais est temporairement ignorée.
Chaque file d'attente a une limite de 30 demandes.Lorsque la limite d'une file d'attente est atteinte, les demandes échouent avec un code d'erreur dans la plage 301-306, indiquant que les demandes ont été entièrement abandonnées.
Limites du serveur
Chaque serveur est autorisé à effectuer un certain nombre de demandes de stockage de données en fonction du type de demande et du nombre d'utilisateurs.Utilisez GetRequestBudgetForRequestType() pour confirmer le nombre de demandes de stockage de données que le lieu actuel peut faire.
taperde demande | Fonctions | Demandes par minute |
---|---|---|
Obtenir | GetAsync() | 60 + numJoueurs × 10 |
Définir (la limite est partagée entre toutes les fonctions listées) | Class.GlobalDataStore:SetAsync()|SetAsync()``Class.GlobalDataStore:IncrementAsync()|IncrementAsync()``Class.GlobalDataStore:UpdateAsync()|UpdateAsync()``Class.GlobalDataStore:RemoveAsync()|RemoveAsync() | 60 + numJoueurs × 10 |
Obtenir trié | GetSortedAsync() | 5 + joueurs numéro × 2 |
Obtenir la version | Class.DataStore:GetVersionAsync()|GetVersionAsync()``Class.DataStore:GetVersionAtTimeAsync()|GetVersionAtTimeAsync() | 5 + joueurs numéro × 2 |
Liste | Class.DataStoreService:ListDataStoresAsync()|ListDataStoresAsync()``Class.DataStore:ListKeysAsync()|ListKeysAsync()``Class.DataStore:ListVersionsAsync()|ListVersionAsync() | 5 + joueurs numéro × 2 |
Enlever | RemoveVersionAsync() | 5 + joueurs numéro × 2 |
Limites de données
Les magasins de données limitent la quantité de données pouvant être utilisées par entrée.
Le nom du magasin de données, le nom de la clé et le scope doivent tous être inférieurs à une certaine longueur de caractère. Utilisez string.len() pour vérifier leur longueur.
Les données (la valeur clé) sont également stockées sous forme de chaîne, indépendamment de leur taperinitial.Vous pouvez vérifier la taille des données avec la fonction JSONEncode(), qui convertit les données Luau en table JSON sérialisée.
composant | Nombre maximum de caractères |
---|---|
Nom du magasin de données | 50 |
Nom de la clé | 50 |
Portée | 50 |
Données (valeur clé) | 4 194 304 par clé |
Limites des métadonnées
Limites du nombre de caractères dans les métadonnées définies par l'utilisateur.
composant | Nombre maximum de caractères |
---|---|
Nom de la clé | 50 |
Valeur | 250 |
Paires clé-valeur | 300 |
Limites de débit
Les limites de débit par clé garantissent que les performances sont optimales sur les serveurs Roblox.Chaque limite s'applique à chaque clé sur tous les serveurs dans une expérience et se renouvelle au fil du temps.
Roblox examine l'utilisation du quota associé à la clé au cours des 60 dernières secondes.Si l'utilisation, y compris la demande actuelle, se trouve dans la limite de débit, la demande est approuvée.Si l'utilisation dépasse la limite, la demande est refusée.
taperde demande | Limite |
---|---|
Lire | 25 Mo par minute |
Écrire | 4 Mo par minute |
Limites de stockage
Actuellement, il n'y a pas de limites de stockage imposées sur les magasins de données.