Le richieste che si eseguono ai negozi di dati possono fallire a causa di una connessione scarsa o di altri problemi. Per gestire gli errori e restituire messaggi con un codice di errore, avvolgi le funzioni del negozio di dati in pcall() .
Riferimento del codice di errore
Codice di errore | Nome errore | Messaggio di errore | Note | |
---|---|---|---|---|
101 | KeyNameEmpty | Il nome della chiave non può essere vuoto. | Controlla se l'input della chiave nella funzione di archiviazione dei dati è una Stringavuota. | |
102 | KeyNameLimit | Il nome della chiave supera il limite di 50 caratteri. | Controlla se l'input della chiave nella funzione di archiviazione dei dati supera una lunghezza di 50. | |
103 | ValueNotAllowed | Impossibile consentire X in DataStore . | Un cattivo funzione di aggiornamento ha restituito un valore di tipo X . | |
104 | CantStoreValue | Impossibile memorizzare X in DataStore . | La funzione update ha restituito un valore di tipo X che non si serIALizza. | |
105 | ValueTooLarge | Il valore serializzato supera il limite X. | Se stai impostando un valore con SetAsync() o UpdateAsync(), la lunghezza serializzata del valore non può superare la dimensione X . Per controllare la lunghezza serializzata dei dati, usa 1> Class.HttpService:JSONEncode()|JSONEncode()1> . | |
106 | MaxValueInvalid | MaxValue deve essere un Integro. | Se stai passando un valore massimo a GetSortedAsync() per un OrderedDataStore, deve essere un Integro. | |
106 | MinValueInvalid | MinValue deve essere un Integro. | Se stai passando un valore minimo a GetSortedAsync() per un OrderedDataStore, deve essere un Integro. | |
106 | PageSizeGreater | PageSize deve essere all'interno di un raggio predefinito. | Il minimo spazio di pagina per un OrderedDataStore è 1. | |
106 | PageSizeLesser | PageSize deve essere all'interno di un raggio predefinito. | Il massimo della dimensione della pagina per un OrderedDataStore è 100. | |
107 | MinMaxOrderInvalid | MaxValue deve essere maggiore o uguale a MinValue . | Il valore massimo deve essere maggiore o uguale al valore minimo per GetSortedAsync() . | |
301 | GetAsyncThrottle | GetAsync caduta. La richiesta è stata limitata, ma la coda era piena. | GetAsync() la richiesta ha superato il limite di dimensioni della coda e Roblox non è in grado di elaborare le richieste al momento attraverso il flusso di lavoro attuale. | |
302 | SetAsyncThrottle | SetAsync inviata. La richiesta è stata limitata, ma la coda era piena. | SetAsync() la richiesta ha superato il limite di dimensioni della coda e Roblox non è in grado di elaborare le richieste al momento attraverso il flusso di lavoro attuale. | |
303 | IncreAsyncThrottle | IncrementAsync è stata abbandonata. La richiesta è stata limitata, ma la coda era piena. | IncrementAsync() la richiesta ha superato il limite di dimensioni della coda e Roblox non è in grado di elaborare le richieste al momento attraverso il flusso di lavoro attuale. | |
304 | UpdateAsyncThrottle | UpdateAsync richiesta abbandonata. La richiesta è stata limitata, ma la coda era piena. | UpdateAsync() la richiesta ha superato la dimensione massima della coda e Roblox non è in grado di elaborare le richieste al momento attraverso il flusso di lavoro attuale. | |
304 | TransformThrottle | UpdateAsync richiesta abbandonata. La richiesta è stata limitata, ma la coda era piena. | UpdateAsync() la richiesta ha superato la dimensione massima della coda e Roblox non è in grado di elaborare le richieste al momento attraverso il flusso di lavoro attuale. | |
305 | GetSortedThrottle | GetSorted richiesta abbandonata. La richiesta è stata limitata, ma la coda era piena. | GetSortedAsync() la richiesta ha superato il massimo della dimensione della coda e Roblox non è in grado di elaborare le richieste al momento attraverso il flusso di lavoro attuale. | |
306 | RemoveAsyncThrottle | RemoveAsync è stata abbandonata. La richiesta è stata limitata, ma la coda era piena. | RemoveAsync() la richiesta ha superato la dimensione massima della coda e Roblox non è in grado di elaborare le richieste al momento attraverso il flusso di lavoro attuale. | |
401 | DataModelNoAccess | La richiesta è fallita. DataModel è inaccessibile mentre l'esperienza viene riavviata. | DataModel non è inizializzato poiché l'esperienza si sta spegnendo. | |
402 | LuaWebSrvsNoAccess | La richiesta è fallita. LuaWebService è inaccessibile mentre l'esperienza viene riavviata. | LuaWebService non è inizializzato in quanto l'esperienza si sta spegnendo. | |
403 | StudioAccessToApisNotAllowed | Impossibile scrivere a DataStore da Studio poiché l'accesso API non è abilitato. | L'accesso API deve essere attivo per utilizzare i Data Store in Studio. | |
404 | InternalError | OrderedDataStore non esiste. | Il OrderedDataStore associato a questa richiesta non è stato trovato. Questo potrebbe essere un segno di corruzione dei dati. Riprova più tardi. | |
501 | InternalError | Impossibile analizzare la risposta poiché i dati potrebbero essere corrotti. | Il server non è stato in grado di elaborare la risposta alla tua Richiesta. Questo potrebbe essere un segno di corruzione dei dati. Riprova più tardi. | |
502 | RequestRejected | API Services ha rifiutato la richiesta con errore X . | Si è verificato un errore X durante il processo sui server Roblox. Riprova più tardi. | |
503 | InternalError | La richiesta di memorizzazione dei dati è stata un successo, ma la chiave non è stata trovata. | La chiave richiesta non è stata trovata nel Data Store. Questo potrebbe essere un segno di corruzione dei dati. Riprova più tardi. | |
504 | InternalError | La richiesta di archiviazione dei dati è stata un successo, ma la risposta non è stata correttamente formatata. | Il server non è stato in grado di elaborare la risposta alla tua Richiesta. Questo potrebbe essere un segno di corruzione dei dati. Riprova più tardi. | |
505 | InternalError | OrderedDataStore la richiesta è stata un successo, ma la risposta non è stata formattata correttamente. | Il server non è stato in grado di elaborare la risposta alla tua RichiestaOrderedDataStore. Questo potrebbe essere un segno di corruzione dei dati. Riprova più tardi. | |
509 | OperationNotAllowed | Le operazioni di archiviazione dei dati sono bloccate mentre si esegue su un RCC personale per prevenire possibili corruzioni dei dati. | I write del datastore sono bloccati sui canali RCC privati. | |
511 | AttributeSizeTooLarge | Il limite di dimensioni dell'attributo metadato supera X limite. | Il limite di dimensioni dei metadati serializzati supera il limite di X . Il valore X è dinamico. Se la dimensione cambia, il valore cambia anche. | |
512 | UserIdLimitExceeded | UserID dimensione supera il limite X. | La lunghezza dell' array ID utente fornito dall'utente supera il limite di X . | |
513 | AttributeFormatError | Il formato userId non è valido. | L'ID utente fornito non è un numero. | |
513 | AttributeFormatError | Il formato dei metadati degli attributi non è valido. | Il metadato non è una tabella. | |
GetVersionAsyncThrottle | GetVersionAsync richiesta abbandonata. La richiesta è stata limitata. | GetVersionAsync() la richiesta ha superato il limite di dimensioni della coda e Roblox non è in grado di elaborare le richieste al momento attraverso il flusso di lavoro attuale. | ||
ListDataStoresAsyncThrottle | ListDataStoresAsync richiesta abbandonata. La richiesta è stata limitata. | ListDataStoresAsync() la richiesta ha superato il massimo della dimensione della coda e Roblox non è in grado di elaborare le richieste al momento attraverso il flusso di lavoro attuale. | ||
ListKeysAsyncThrottle | ListKeysAsync richiesta abbandonata. La richiesta è stata limitata. | ListKeysAsync() la richiesta ha superato il massimo della dimensione della coda e Roblox non è in grado di elaborare le richieste al momento attraverso il flusso di lavoro attuale. | ||
ListVersionsAsyncThrottle | ListVersionsAsync richiesta abbandonata. La richiesta è stata limitata. | ListVersionsAsync() la richiesta ha superato il massimo della dimensione di archiviazione della coda e Roblox non è in grado di elaborare le richieste al momento attraverso il flusso di lavoro attuale. | ||
RemoveVersionAsyncThrottle | RemoveVersionAsync richiesta abbandonata. La richiesta è stata limitata. | RemoveVersionAsync() la richiesta ha superato il massimo della dimensione della coda e Roblox non è in grado di elaborare le richieste al momento attraverso il flusso di lavoro attuale. |
Codici di errore del server
Nome errore | Messaggio di errore | Note |
---|---|---|
DatastoreThrottled | Il tasso di richieste supera il massimo consentito per il datastore . | Sono state inviate troppe richieste a un singolo Data Store. |
InternalServerError | Si è verificato un errore interno del server. | Errore occasionale nei server Roblox. Riprova, idealmente con un backoff esponenziale. |
InvalidPlace | Il luogo fornito non è valido. | Nessun ID dell'Universo corrispondente per il Posto. Riprova più tardi. |
InvalidTarget | Il target fornito non è valido. | Il nome del chiave del Data Store ordinato supera il limite di 50 caratteri. |
InvalidUniverse | L'universo fornito non è valido. | Nessun ID luogo corrispondente per l'universo. Riprova più tardi. |
InvalidUserIds | Gli ID utente forniti hanno un formato non valido. | Impossibile elaborare gli ID utente. |
KeyThrottled | Il tasso di richieste supera il massimo consentito per la chiave. | Il tasso di richieste supera il tasso di richieste massimo per una chiave singola. |
KeyNotFound | La chiave richiesta non esiste. | La chiave non esiste. |
N/A | Nessuna pagina a cui passare. | Questo errore si verifica quando chiami Pages:AdvanceToNextPageAsync() sulla pagina ultima. |
Limitazioni
I modelli di dati hanno 限i . Se un'esperienza supera questi limiti, il servizio aziona automaticamente l'utilizzo del magazzino di dati dell'esperienza e causa richieste future in una delle seguenti code:
- Impostare
- Impostareordinato
- Ottieni
- Ordinato get
Le richieste in una coda vengono gestite nell'ordine in cui vengono ricevute. La funzione chiamata continua a generare fino a quando la sua richiesta è ancora in coda. Se il valore di chiave del data store viene limitato, la richiesta viene inserita in una coda ma viene temporaneamente saltata.
Ogni coda ha un limite di 30 richieste. Quando il limite di una coda viene raggiunto, le richieste falliscono con un codice di errore nella gamma 301-306, il che indica che le richieste sono state completamente abbandonate.
Limiti del server
Ogni server è autorizzato a un certo numero di richieste di archiviazione dei dati in base al tipo di richiesta e al numero di utenti. Usa GetRequestBudgetForRequestType() per confermare il numero di richieste di archiviazione dei dati che il luogo attuale può fare.
Tipo di richiesta | Funzioni | Richieste al Minuto |
---|---|---|
ottenere | GetAsync() | 60 + numGiocatori × 10 |
Imposta (il limite è condiviso tra tutte le funzioni elencate) | SetAsync() Class.GlobalDataStore:IncrementAsync()|IncrementAsync() Class.GlobalDataStore:UpdateAsync()|UpdateAsync() 0> Class.GlobalDataStore:RemoveAsync()|RemoveAsync()0> | 60 + numGiocatori × 10 |
Ottieni ordinato | GetSortedAsync() | 5 + numGiocatori × 2 |
Ottieni la versione | GetVersionAsync() | 5 + numGiocatori × 2 |
Lista | Class.DataStoreService:ListDataStoresAsync()|ListDataStoresAsync()``Class.DataStore:ListKeysAsync()|ListKeysAsync()``Class.DataStore:ListVersionsAsync()|ListVersionAsync() | 5 + numGiocatori × 2 |
Rimuovi | RemoveVersionAsync() | 5 + numGiocatori × 2 |
Limiti di dati
I negozi di dati limitano la quantità di dati che possono essere utilizzati per ogni voce.
Il nome del magazzino dei dati, il nome della chiave e lo scripto devono tutti essere sotto una certa lunghezza di carattere. Usa string.len() per controllare la loro lunghezza.
I dati (valore della chiave) vengono anche memorizzati come una Stringa, indipendentemente dal suo inserisci / scriviiniziale. Puoi controllare la dimensione dei dati con la funzione JSONEncode(), che convertisce i dati Lua in una tabella JSON serializzata.
Componente | Numero massimo di caratteri |
---|---|
Nome del Data Store | 50 |
Nome chiave | 50 |
Scopo | 50 |
Data (Valore chiave) | 4,194,304 per chiave |
Limitazioni dei metadati
Limitazioni al numero di caratteri nei metadati utente.
Componente | Numero massimo di caratteri |
---|---|
Nome chiave | 50 |
Valore | 250 |
Coppie chiave-valore | 300 |
Limiti di Throughput
I limiti di produzione per chiave garantiscono che le prestazioni siano ottimali nei server Roblox. Ogni limite si applica a ogni singola chiave su tutti i server in un'esperienza e si aggiorna nel tempo.
Roblox esamina l'uso della quota associato alla chiave negli ultimi 60 secondi. Se l'uso, inclusa la Richiestacorrente, è all'interno del limite di produzione, la richiesta viene approvata. Se l'uso supera il limite, la richiesta viene rifiutata.
Tipo di richiesta | Limite |
---|---|
Leggi | 25 MB al minuto |
Scrivi | 4 MB al minuto |