Les demandes que vous faites aux magasins de données peuvent échouer en raison de la mauvaise connectivité ou d'autres problèmes. Pour gérer les erreurs et renvoyer des messages avec un code d'erreur,Wrap data store functions in pcall() .
Référence de code d'erreur
Code d'erreur | Nom de l'erreur | Message d'erreur | Notes | |
---|---|---|---|---|
101 | KeyNameEmpty | Le nom de la clé ne peut pas être vide. | Vérifiez si l'entrée de clé dans la fonction de stockage des données est une chaîne vide. | |
102 | KeyNameLimit | Le nom de la clé dépasse la limite de 50 caractères. | Vérifiez si l'entrée de clé dans la fonction de stockage des 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 DataStore . | La fonction de mise à jour a renvoyé 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 1> Class.HttpService:JSONEncode()|JSONEncode()1> . | |
106 | MaxValueInvalid | MaxValue doit être un nombre entier. | Si vous renvoyez une valeur maximale à GetSortedAsync() pour un OrderedDataStore, il doit s'agir d'un nombre entier. | |
106 | MinValueInvalid | MinValue doit être un nombre entier. | Si vous passez une valeur minimum à GetSortedAsync() pour un OrderedDataStore, il doit s'agir d'un nombre entier. | |
106 | PageSizeGreater | PageSize doit être dans une tranche prédéfinie. | La taille minimum de la page pour un OrderedDataStore est 1. | |
106 | PageSizeLesser | PageSize doit être dans une tranche prédéfinie. | La taille maximale d'une 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 requête abandonnée. La demande a été ralentie, 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 à la fois. | |
302 | SetAsyncThrottle | SetAsync requête abandonnée. La demande a été ralentie, 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 à la fois. | |
303 | IncreAsyncThrottle | IncrementAsync requête abandonnée. La demande a été ralentie, 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 à la fois. | |
304 | UpdateAsyncThrottle | UpdateAsync requête abandonnée. La demande a été ralentie, 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 à la fois. | |
304 | TransformThrottle | UpdateAsync requête abandonnée. La demande a été ralentie, 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 à la fois. | |
305 | GetSortedThrottle | GetSorted requête abandonnée. La demande a été ralentie 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 à la fois. | |
306 | RemoveAsyncThrottle | RemoveAsync requête abandonnée. La demande a été ralentie, 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 à la fois. | |
401 | DataModelNoAccess | La demande a échoué. DataModel est in accessible 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é. Ceci 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. Ceci pourrait être un signe de corruption des données. Réessayez plus tard. | |
502 | RequestRejected | Les services d'API ont rejeté la demande avec erreur X . | Une 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 Data Store. Ceci pourrait être un signe de corruption des données. Réessayez plus tard. | |
504 | InternalError | La demande de stockage de données a été un succès, mais la réponse n'a pas été correctement formatée. | Le serveur n'a pas pu analyser la réponse à votre demande. Ceci pourrait être un signe de corruption des données. Réessayez plus tard. | |
505 | InternalError | La demande OrderedDataStore a été un succès, mais la réponse n'a pas été formâtée correctement. | Le serveur n'a pas pu analyser la réponse à votre demande OrderedDataStore. Ceci pourrait être un signe de corruption des données. Réessayez plus tard. | |
509 | OperationNotAllowed | Les opérations de stockage des données sont bloquées lors de l'exécution d'un RCC personnel pour éviter la corruption des données possibles. | Les écrits de données sont bloqués sur les canaux RCC privés. | |
511 | AttributeSizeTooLarge | La taille de l'attribut métadonnées dépasse la limite X. | La taille métadonnée sérialisée 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 des ID d'utilisateur fournis par l'utilisateur dépasse la limite de X. | |
513 | AttributeFormatError | Le format de l'attribut userId n'est invalide. | L'ID utilisateur fourni n'est pas un nombre. | |
513 | AttributeFormatError | Le format de métadonnées d'attribut est invalide. | La métadonnée n'est pas une table. | |
GetVersionAsyncThrottle | GetVersionAsync requête abandonnée. La demande a été ralentie. | GetVersionAsync() la demande a dépassé la taille maximale de la file d'attente et Roblox est incapable de traiter les demandes à la fois. | ||
ListDataStoresAsyncThrottle | ListDataStoresAsync requête abandonnée. La demande a été ralentie. | ListDataStoresAsync() la demande a dépassé la taille maximale de la file d'attente et Roblox est incapable de traiter les demandes à la fois. | ||
ListKeysAsyncThrottle | ListKeysAsync requête abandonnée. La demande a été ralentie. | ListKeysAsync() la demande a dépassé la taille maximale de la file d'attente et Roblox est incapable de traiter les demandes à la fois. | ||
ListVersionsAsyncThrottle | ListVersionsAsync requête abandonnée. La demande a été ralentie. | ListVersionsAsync() la demande a dépassé la taille maximale de la file d'attente et Roblox est incapable de traiter les demandes à la fois. | ||
RemoveVersionAsyncThrottle | RemoveVersionAsync requête abandonnée. La demande a été ralentie. | RemoveVersionAsync() la demande a dépassé la taille maximale de la file d'attente et Roblox est incapable de traiter les demandes à la fois. |
Codes d'erreur du serveur
Nom de l'erreur | Message d'erreur | Notes |
---|---|---|
DatastoreThrottled | Le taux de demande dépasse le maximum autorisé pour le datastore . | Trop de demandes ont été envoyées à un seul Data Store. |
InternalServerError | Une erreur interne du serveur s'est produite. | Erreur ponctuelle sur les serveurs Roblox. Réessayez, idéalement avec un backoff exponentiel. |
InvalidPlace | L'endroit fourni n'est invalide. | Aucun ID d'univers correspondant pour l'emplacement. Réessayez plus tard. |
InvalidTarget | La cible fournie n'est invalide. | Le nom de la clé de la boutique de données commandée dépasse la limite de 50 caractères. |
InvalidUniverse | L'univers fourni n'est invalide. | Aucun ID de lieu correspondant pour l'univers. Réessayez plus tard. |
InvalidUserIds | Les ID d'utilisateur fournis ont un format invalide. | Échec de la transformation des identifiants de l'utilisateur. |
KeyThrottled | Le taux de requête dépasse le maximum autorisé pour la clé. | Le taux de demande dépasse le taux de demande maximum pour une seule clé. |
KeyNotFound | La clé demandée n'existe pas. | La clé n'existe pas. |
N/A | Aucune page à laquelle avancer. | Cette erreur se produit lorsque vous appelez Pages:AdvanceToNextPageAsync() sur la dernière page. |
Limites
Les modèles de données ont limites . Si une expérience dépasse ces limites, le service met automatiquement la limite d'utilisation de la donnée de l'expérience et provoque la création d'une demande future dans l'une des files d'attente suivantes :
- Ensemble
- configurercommandé
- Obtenir
- Commandé
Les demandes d'une file d'attente sont traitées dans l'ordre dans lequel elles sont reçues. La fonction appelée continue de générer tant que sa demande est toujours dans la file d'attente. Si la clé du stockage de données est elle-même limitée, la demande est placée dans la file d'attente, mais est temporairement ignorée.
Chaque file d'attente a un limite de 30 requêtes. Lorsque la limite d'une file d'attente est atteinte, les demandes échouent avec un code d'erreur dans la tranche 301-306, ce qui indique que les demandes ont été abandonnées entièrement.
Limites de 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.
Type de demande | Fonctions | Demandes par minute |
---|---|---|
Obtenez | GetAsync() | 60 + numJoueurs × 10 |
Définir (limite partagée par toutes les fonctions répertoriées) | Class.GlobalDataStore:SetAsync()|SetAsync()``Class.GlobalDataStore:IncrementAsync()|IncrementAsync()``Class.GlobalDataStore:UpdateAsync()|UpdateAsync() 0> Class.GlobalDataStore:RemoveAsync()|RemoveAsync()0> | 60 + numJoueurs × 10 |
Trier | GetSortedAsync() | 5 + numJoueurs × 2 |
Obtenir la version | GetVersionAsync() | 5 + numJoueurs × 2 |
Listes | Class.DataStoreService:ListDataStoresAsync()|ListDataStoresAsync()``Class.DataStore:ListKeysAsync()|ListKeysAsync()``Class.DataStore:ListVersionsAsync()|ListVersionAsync() | 5 + numJoueurs × 2 |
Supprimer. | RemoveVersionAsync() | 5 + numJoueurs × 2 |
Limites de données
Les magasins de données limitent la quantité de données utilisées par entrée.
Le nom du magasin de données, le nom de la clé et la porte d'angle doivent tous être sous une certaine longueur de caractère. Utilisez string.len() pour vérifier leur longueur.
Les données (valeur clé) sont également stockées comme une 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 Lua en une table JSON sérialisée.
Composant | Nombre max de caractères |
---|---|
Nom du DataStore | 50 |
Nom de clé | 50 |
Lunette | 50 |
Données (valeur clé) | 4 194 304 par clé |
Limites de métadonnées
Limites au nombre de caractères dans les métadonnées utilisateur.
Composant | Nombre max de caractères |
---|---|
Nom de clé | 50 |
Valeur | 250 |
Paires clé-valeur | 300 |
Limites de sortie
Les limites de production par clé garantissent que les performances sont optimales sur les serveurs Roblox. Chaque limite s'applique à chaque clé dans toutes les expériences et se rafraîchit au fil du temps.
Roblox examine l'utilisation de la clé associée au key au cours des 60 dernières secondes. Si l'utilisation, y compris la demande actuelle, est dans la limite de sortie, la demande est approuvée. Si l'utilisation dépasse la limite, la demande est refusée.
Type de demande | Limite |
---|---|
Lire | 25 MB par minute |
Écrire | 4 MB par minute |