Anfragen, die Sie an Datenstores senden, können aufgrund schlechter Verbindlichkeit oder anderer Probleme fehlgeschlagen. Um Fehler zu behandeln und Fehlmeldungen mit einem Codeszu erstellen, umgibt Datenstores Funktionen in pcall() .
Fehlercode-Referenz
Fehlercode | Fehlername | Fehler-Nachricht | Notizen | |
---|---|---|---|---|
101 | KeyNameEmpty | Der Schlüsselname kann nicht leer sein. | Überprüfen Sie, ob die Schlüssel-Eingabe in die Daten-Store-Funktion eine leere Stringist. | |
102 | KeyNameLimit | Der Schlüsselname übersteigt das 50-zeichen-Limit. | Überprüfen Sie, ob die Schlüssel-Eingabe in die Daten-Store-Funktion eine Länge von 50 überschreitet. | |
103 | ValueNotAllowed | Kann nicht X in DataStore erlauben. | Eine schlechte Update-Funktion hat einen Wert von X zurückgegeben. | |
104 | CantStoreValue | Kann X nicht in DataStore speichern. | Die Aktualisierungsfunktion hat einen Wert von X zurückgegeben, der nicht serialisiert wurde. | |
105 | ValueTooLarge | Der serielle Wert überschreitet das X Limit. | Wenn Sie einen Wert mit SetAsync() oder UpdateAsync() einstellen, kann die serielle Länge des Wertes nicht die Größe X überschreiten. Um die serielle Länge der Daten zu überprüfen, verwenden Sie 1> Class.HttpService:JSONEncode()|JSONEncode()1>. | |
106 | MaxValueInvalid | MaxValue muss eine ganzzahligsein. | Wenn Sie einen Maximalwert für ein GetSortedAsync() angeben, muss es ein ganzzahligsein. | |
106 | MinValueInvalid | MinValue muss eine ganzzahligsein. | Wenn Sie einen Minimalwert für ein GetSortedAsync() angeben, muss er eine Zahl sein. | |
106 | PageSizeGreater | PageSize muss innerhalb eines vordefinierten Bereichs liegen. | Die minimale Seitengröße für einen OrderedDataStore ist 1. | |
106 | PageSizeLesser | PageSize muss innerhalb eines vordefinierten Bereichs liegen. | Die maximale Seitengröße für einen OrderedDataStore beträgt 100. | |
107 | MinMaxOrderInvalid | MaxValue muss größer sein als oder gleich sein mit MinValue. | Der maximale Wert muss größer als oder gleich dem Minimumswert für GetSortedAsync() sein. | |
301 | GetAsyncThrottle | GetAsync Anfrage abgeworfen. Die Anfrage wurde gedrosselt, aber die Warteschlange war voll. | GetAsync() die Anfrage hat die maximale Anforderungsgröße überschritten und Roblox kann die Anfragen nicht im aktuellen Durchsatz verarbeiten. | |
302 | SetAsyncThrottle | SetAsync Anfrage abgeworfen. Anfrage wurde gedrosselt, aber die Warteschlange war voll. | SetAsync() die Anfrage hat die maximale Anforderungsgröße überschritten und Roblox kann die Anfragen nicht im aktuellen Durchsatz verarbeiten. | |
303 | IncreAsyncThrottle | IncrementAsync Anfrage abgeworfen. Die Anfrage wurde gedrosselt, aber die Warteschlange war voll. | IncrementAsync() die Anfrage hat die maximale Anforderungsgröße überschritten und Roblox kann die Anfragen nicht im aktuellen Durchsatz verarbeiten. | |
304 | UpdateAsyncThrottle | UpdateAsync Anfrage abgeworfen. Anfrage wurde gedrosselt, aber die Warteschlange war voll. | UpdateAsync() die Anfrage hat die maximale Anforderungsgröße überschritten und Roblox kann die Anfragen nicht im aktuellen Durchsatz verarbeiten. | |
304 | TransformThrottle | UpdateAsync Anfrage abgeworfen. Anfrage wurde gedrosselt, aber die Warteschlange war voll. | UpdateAsync() die Anfrage hat die maximale Anforderungsgröße überschritten und Roblox kann die Anfragen nicht im aktuellen Durchsatz verarbeiten. | |
305 | GetSortedThrottle | GetSorted Anfrage wurde abgeworfen. Die Anfrage wurde gedrosselt, aber die Warteschlange war voll. | GetSortedAsync() die Anfrage hat die maximale Anforderungsgröße überschritten und Roblox kann die Anfragen nicht im aktuellen Durchsatz verarbeiten. | |
306 | RemoveAsyncThrottle | RemoveAsync Anfrage abgeworfen. Anfrage wurde gedrosselt, aber die Warteschlange war voll. | RemoveAsync() die Anfrage hat die maximale Anforderungsgröße überschritten und Roblox kann die Anfragen nicht im aktuellen Durchsatz verarbeiten. | |
401 | DataModelNoAccess | Anfrage fehlgeschlagen. DataModel ist in Zugriffssperre, während die Erfahrung heruntergefahren wird. | DataModel ist nicht initialisiert, da die Erfahrung wird heruntergefahren. | |
402 | LuaWebSrvsNoAccess | Anfrage fehlgeschlagen. LuaWebService ist inaktiv, während die Erfahrung heruntergefahren wird. | LuaWebService ist nicht initialisiert, da die Erfahrung heruntergefahren wird. | |
403 | StudioAccessToApisNotAllowed | Kann nicht auf DataStore von Studio schreiben, da der Zugriff auf die API nicht aktiviert ist. | API-Zugriff muss aktiviert sein, um Data Stores in Studio zu verwenden. | |
404 | InternalError | OrderedDataStore existiert nicht. | Der OrderedDataStore mit dieser Anfrage war nicht gefunden. Dies könnte ein Zeichen für Datenkorruption sein. Versuchen Sie es später erneut. | |
501 | InternalError | Kann keine Antwort parsen, da die Daten möglicherweise beschädigt sind. | Der Server konnte die Antwort auf deine Anfrage nicht parsieren. Das könnte ein Zeichen für Datenkorruption sein. Versuche es später erneut. | |
502 | RequestRejected | API-Dienste lehnten die Anfrage mit einem Fehler ab X. | Fehler X auf Roblox-Servern ist aufgetreten. Versuchen Sie es später erneut. | |
503 | InternalError | Die Anfrage zum Speichern von Daten war erfolgreich, aber der Schlüssel wurde nicht gefunden. | Der angeforderte Schlüssel wurde nicht in der Datenbank gefunden. Dies könnte ein Zeichen für eine Datenkorruption sein. Versuchen Sie es später erneut. | |
504 | InternalError | Die Anfrage zum Speichern von Daten war erfolgreich, aber die Antwort wurde nicht richtig formatiert. | Der Server konnte die Antwort auf deine Anfrage nicht parsieren. Das könnte ein Zeichen für Datenkorruption sein. Versuche es später erneut. | |
505 | InternalError | OrderedDataStore die Anfrage war erfolgreich, aber die Antwort wurde nicht richtig formatiert. | Der Server konnte die Antwort auf deine OrderedDataStore Anfrage nicht parsieren. Dies könnte ein Zeichen für Datenkorruption sein. Versuche es später erneut. | |
509 | OperationNotAllowed | Datenspeicher-Operationen werden blockiert, während auf einem Personal RCC ausgeführt, um mögliche Datenkorruption zu verhindern. | Datenspeicher-Schreiben ist auf private RCC-Kanäle blockiert. | |
511 | AttributeSizeTooLarge | Die Größe des Metadaten-Elements übersteigt das X-Limit. | Die serialisierte Metadatengröße überschreitet das Limit von X. Der Wert X ist dynamisch. Wenn die Größe geändert wird, ändert sich der Wert auch. | |
512 | UserIdLimitExceeded | UserID Größe überschreitet X Limit. | Die Länge der von der Benutzeroberfläche bereitgestellten Benutzer-IDs übersteigt das Limit von X. | |
513 | AttributeFormatError | Attribut userId ist ungültig. | Die angegebene Benutzer-ID ist keine Zahl. | |
513 | AttributeFormatError | 属性-Metadaten-格式 ist ungültig. | Das Metadaten ist keine Tabelle. | |
GetVersionAsyncThrottle | GetVersionAsync Anfrage abgeworfen. Anfrage wurde gedrosselt. | GetVersionAsync() die Anfrage hat die maximale Anforderungsgröße überschritten und Roblox kann die Anfragen nicht im aktuellen Durchsatz verarbeiten. | ||
ListDataStoresAsyncThrottle | ListDataStoresAsync Anfrage abgeworfen. Anfrage wurde gedrosselt. | ListDataStoresAsync() die Anfrage hat die maximale Anforderungsgröße überschritten und Roblox kann die Anfragen nicht im aktuellen Durchsatz verarbeiten. | ||
ListKeysAsyncThrottle | ListKeysAsync Anfrage abgeworfen. Anfrage wurde gedrosselt. | ListKeysAsync() die Anfrage hat die maximale Anforderungsgröße überschritten und Roblox kann die Anfragen nicht im aktuellen Durchsatz verarbeiten. | ||
ListVersionsAsyncThrottle | ListVersionsAsync Anfrage wurde abgeworfen. Anfrage wurde gedrosselt. | ListVersionsAsync() die Anfrage hat die maximale Anforderungsgröße überschritten und Roblox kann die Anfragen nicht im aktuellen Durchsatz verarbeiten. | ||
RemoveVersionAsyncThrottle | RemoveVersionAsync Anfrage abgeworfen. Anfrage wurde gedrosselt. | RemoveVersionAsync() die Anfrage hat die maximale Anforderungsgröße überschritten und Roblox kann die Anfragen nicht im aktuellen Durchsatz verarbeiten. |
Serverfehler-Codes
Fehlername | Fehler-Nachricht | Notizen |
---|---|---|
DatastoreThrottled | Die Anforderungsrate übersteigt das erlaubte Maximum für das datastore . | Zu viele Anfragen wurden an einen einzelnen Data Store gesendet. |
InternalServerError | Ein interner Serverfehler ist aufgetreten. | Hin und wieder Fehler auf Roblox-Servern. Versuche es noch einmal, idealerweise mit einem Exponential-Backoff. |
InvalidPlace | Der angegebene Ort ist ungültig. | Keine passende Universum-ID für den Ort. Versuchen Sie es später erneut. |
InvalidTarget | Das angegebene Ziel ist ungültig. | Der Schlüsselname des Datenspeichers bestellt ist größer als die 50 Zeichen-Begrenzung. |
InvalidUniverse | Das angegebene Universum ist ungültig. | Keine Platz-ID für das Universum übereinstimmt. Versuchen Sie es später erneut. |
InvalidUserIds | Die angegebenen Benutzer-IDs haben ein ungültiges Format. | Benutzer-IDs konnten nicht analysiert werden. |
KeyThrottled | Die Anforderungsrate übersteigt das erlaubte Maximum für den Schlüssel. | Die Anforderungsrate übersteigt die maximale erlaubte Anforderungsrate für einen einzelnen Schlüssel. |
KeyNotFound | Der angeforderte Schlüssel existiert nicht. | Der Schlüssel existiert nicht. |
N/A | Keine Seiten, zu denen Sie weitergehen können. | Dieser Fehler tritt auf, wenn Sie Pages:AdvanceToNextPageAsync() auf der letzten Seite aufrufen. |
Beschränkungen
Datenmodelle haben Grenzen . Wenn ein Erlebnis diese Grenzen überschreitet, stoppt der Dienst automatisch die Verwendung des Datenstoßes des Erlebnisses und verursacht, dass in einer der folgenden Warteschlange Anfragen platziert werden:
- Setzen
- Bestelltes festlegen
- Erhalten
- Ordered get
Anfragen in einer Warteschlange werden in der Reihenfolge bearbeitet, in der sie erhalten werden. Die aufgerufene Funktion produziert weiter, bis ihre Anfrage immer noch in der Warteschlange ist. Wenn der Datenstoreschlüssel selbst gedrosselt wird, wird die Anfrage in einer Warteschlange platziert, aber vorübergehend übersprungen.
Jede Warteschlange hat ein Limit von 30 Anfragen. Wenn das Limit einer Warteschlange erreicht wird, fehlen Anfragen mit einem Fehlercode in der 301-306-Reihe, der anzeigt, dass die Anfragen vollständig abgeworfen wurden.
Server-Limit
Jeder Server ist auf eine bestimmte Anzahl von Daten-Store-Anfragen basierend auf der Anforderungstyp und Anzahl der Benutzer, die er zulässt. Verwenden Sie GetRequestBudgetForRequestType(), um die Anzahl der Daten-Store-Anfragen zu bestätigen, die der aktuelle Platz machen kann.
Anfragetyp | Funktionen | Anfragen pro Minute |
---|---|---|
Hol dir | GetAsync() | 60 + numSpieler × 10 |
Set (Limit wird zwischen allen aufgeführten Funktionen geteilt) | SetAsync() Class.GlobalDataStore:IncrementAsync()|IncrementAsync() Class.GlobalDataStore:UpdateAsync()|UpdateAsync() 0> Class.GlobalDataStore:RemoveAsync()|RemoveAsync()0> | 60 + numSpieler × 10 |
Sortieren Sie es aus | GetSortedAsync() | 5 + numSpieler × 2 |
Version abrufen | GetVersionAsync() | 5 + numSpieler × 2 |
Liste | Class.DataStoreService:ListDataStoresAsync()|ListDataStoresAsync()``Class.DataStore:ListKeysAsync()|ListKeysAsync()``Class.DataStore:ListVersionsAsync()|ListVersionAsync() | 5 + numSpieler × 2 |
Entfernen | RemoveVersionAsync() | 5 + numSpieler × 2 |
Datenlimit
Datenspeicherungslimits zeigen, wie viel Daten pro Eintrag verwendet werden können.
Der Name des Datenstoßens, der Schlüsselname und die Scope müssen alle unter einer bestimmten Zeichenlänge sein. Verwenden Sie string.len() , um ihre Länge zu überprüfen.
Die Daten (Schlüsselwert) werden auch als Strings gespeichert, unabhängig von ihrem ursprünglichen eingeben. Sie können die Größe der Daten mit der JSONEncode() Funktion überprüfen, die Lua-Daten in eine serialisierte JSON-Tabelle umwandelt.
Komponente | Maximale Anzahl von Zeichen |
---|---|
Name des Datenspeichers | 50 |
Schlüsselname | 50 |
Zielfernrohr | 50 |
Daten (Schlüsselwert) | 4.194,304 pro schlüssel |
Metadaten-Begrenzungen
Beschränkungen der Anzahl der Zeichen in benutzerdefinierten Metadaten.
Komponente | Maximale Anzahl von Zeichen |
---|---|
Schlüsselname | 50 |
Wert | 250 |
Wertepaare | 300 |
Durchsatz-Beschränkungen
Durchputslimits pro Schlüssel stellen sicher, dass die Leistung auf Roblox-Servern optimiert ist. Jedes Limit gilt für jeden einzelnen Schlüssel auf allen Servern in einem Erlebnis und wird mit der Zeit aktualisiert.
Roblox untersucht die Verwendung von Quoten, die mit dem Schlüssel in den letzten 60 Sekunden verbunden sind. Wenn die Verwendung, einschließlich der aktuellen Anfrage, innerhalb des Ausgabe-Limits ist, wird die Anfrage genehmigt. Wenn die Verwendung die Grenze überschreitet, wird die Anfrage abgelehnt.
Anfragetyp | Limitieren |
---|---|
Lesen | 25 MB pro Minute |
Schreiben | 4 MB pro Minute |