Prośby, które składasz do magazynów danych, mogą zawieść z powodu słabej łączności lub innych problemów.Aby obsłużyć błędy i zwrócić wiadomości z kodem błędu, owiń funkcje przechowywania danych w pcall().
Referencja kodu błędu
Kod błędu | Nazwa błędu | Komunikat o błędzie | Notatki | |
---|---|---|---|---|
101 | KeyNameEmpty | Nazwa klucza nie może być pusta. | Sprawdź, czy wejście klucza do funkcji przechowywania danych jest pustą struną. | |
102 | KeyNameLimit | Nazwa klucza przekracza limit 50 znaków. | Sprawdź, czy wpisanie klucza do funkcji przechowywania danych przekracza długość 50. | |
103 | ValueNotAllowed | Nie można zezwolić X w DataStore. | Zła funkcja aktualizacji zwróciła wartość typu X. | |
104 | CantStoreValue | Nie można przechować X w DataStore. | Funkcja aktualizacji zwróciła wartość typu X, która nie została zaserwowana. | |
105 | ValueTooLarge | Wartość zaserializowana przekracza X limit. | Jeśli ustawiasz wartość za pomocą SetAsync() lub UpdateAsync(), długość zaserwowana wartości nie może przekroczyć rozmiaru X.Aby sprawdzić długość zaserwowanych danych, użyj JSONEncode(). | |
106 | MaxValueInvalid | MaxValue musi być liczbą całkowitą. | Jeśli przekazujesz maksymalną wartość do GetSortedAsync() dla OrderedDataStore , musi to być liczba całkowita. | |
106 | MinValueInvalid | MinValue musi być liczbą całkowitą. | Jeśli przekazujesz minimalną wartość do GetSortedAsync() dla OrderedDataStore , musi to być liczba całkowita. | |
106 | PageSizeGreater | PageSize musi znajdować się w określonym przedziale. | Maksymalna wielkość strony dla OrderedDataStore jest 1. | |
106 | PageSizeLesser | PageSize musi znajdować się w określonym przedziale. | Maksymalny rozmiar strony dla OrderedDataStore jest 100. | |
107 | MinMaxOrderInvalid | MaxValue musi być większy niż lub równy MinValue . | Maksymalna wartość musi być większa lub równa minimalnej wartości dla GetSortedAsync() . | |
301 | GetAsyncThrottle | GetAsync prośba została odrzucona. Prośba została ograniczona, ale kolejka była pełna. | GetAsync() prośba przekroczyła maksymalny rozmiar kolejki i Roblox nie jest w stanie przetworzyć żądań przy obecnym przepustowości. | |
302 | SetAsyncThrottle | SetAsync prośba została odrzucona. Prośba została ograniczona, ale kolejka była pełna. | SetAsync() prośba przekroczyła maksymalny rozmiar kolejki i Roblox nie jest w stanie przetworzyć żądań przy obecnym przepustowości. | |
303 | IncreAsyncThrottle | IncrementAsync prośba została odrzucona. Prośba została ograniczona, ale kolejka była pełna. | IncrementAsync() prośba przekroczyła maksymalny rozmiar kolejki i Roblox nie jest w stanie przetworzyć żądań przy obecnym przepustowości. | |
304 | UpdateAsyncThrottle | UpdateAsync prośba została odrzucona. Prośba została ograniczona, ale kolejka była pełna. | UpdateAsync() prośba przekroczyła maksymalny rozmiar kolejki i Roblox nie jest w stanie przetworzyć żądań przy obecnym przepustowości. | |
304 | TransformThrottle | UpdateAsync prośba została odrzucona. Prośba została ograniczona, ale kolejka była pełna. | UpdateAsync() prośba przekroczyła maksymalny rozmiar kolejki i Roblox nie jest w stanie przetworzyć żądań przy obecnym przepustowości. | |
305 | GetSortedThrottle | GetSorted prośba została odrzucona. Prośba została ograniczona, ale kolejka była pełna. | GetSortedAsync() prośba przekroczyła maksymalny rozmiar kolejki i Roblox nie jest w stanie przetworzyć żądań przy obecnym przepustowości. | |
306 | RemoveAsyncThrottle | RemoveAsync prośba została odrzucona. Prośba została ograniczona, ale kolejka była pełna. | RemoveAsync() prośba przekroczyła maksymalny rozmiar kolejki i Roblox nie jest w stanie przetworzyć żądań przy obecnym przepustowości. | |
401 | DataModelNoAccess | Prośba nie powiodła się. DataModel jest niedostępna, gdy doświadczenie jest wyłączane. | DataModel jest niezainicjowany, ponieważ doświadczenie się zamyka. | |
402 | LuaWebSrvsNoAccess | Prośba nie powiodła się. LuaWebService jest niedostępna, gdy doświadczenie jest wyłączane. | LuaWebService jest niezainicjowany, ponieważ doświadczenie się zamyka. | |
403 | StudioAccessToApisNotAllowed | Nie można pisać do DataStore z Studio, ponieważ dostęp do API nie jest włączony. | Dostęp do API musi być aktywny, aby korzystać z Data Store w Studio. | |
404 | InternalError | OrderedDataStore nie istnieje. | Nie znaleziono OrderedDataStore związanych z tym żądaniem. Może to być oznaka korupcji danych. Spróbuj ponownie później. | |
501 | InternalError | Nie można przetworzyć odpowiedzi, ponieważ dane mogą być uszkodzone. | Serwer nie był w stanie przetworzyć odpowiedzi na twoje zapytanie. Może to być oznaka korupcji danych. Spróbuj ponownie później. | |
502 | RequestRejected | Usługi API odrzuciły żądanie z błędem X. | Wystąpił błąd X podczas przetwarzania na serwerach Roblox. Spróbuj ponownie później. | |
503 | InternalError | Wniosek o przechowywanie danych powiódł się, ale klucz nie został znaleziony. | Nie znaleziono klucza żądanego w sklepie danych. Może to być znak korupcji danych. Spróbuj ponownie później. | |
504 | InternalError | Żądanie przechowywania danych powiodło się pomyślnie, ale odpowiedź nie została prawidłowo sformatowana. | Serwer nie był w stanie przetworzyć odpowiedzi na twoje zapytanie. Może to być oznaka korupcji danych. Spróbuj ponownie później. | |
505 | InternalError | OrderedDataStore prośba o sukces, ale odpowiedź nie została prawidłowo sformatowana. | Serwer nie był w stanie przetworzyć odpowiedzi na żądanie OrderedDataStore . Może to być znak korupcji danych. Spróbuj ponownie później. | |
509 | OperationNotAllowed | Operacje przechowywania danych są blokowane podczas uruchamiania na osobistym RCC, aby zapobiec możliwej korupcji danych. | Pisy sklepu danych są blokowane na prywatnych kanałach RCC. | |
511 | AttributeSizeTooLarge | Rozmiar atrybutu metadanych przekracza X limit. | Rozmiar znormalizowanych metadanych przekracza limit X. Wartość X jest dynamiczna. Jeśli rozmiar się zmieni, wartość również się zmieni. | |
512 | UserIdLimitExceeded | UserID rozmiar przekracza X limit. | Długość tablicy ID użytkownika dostarczonej przez użytkownika przekracza limit X. | |
513 | AttributeFormatError | Format atrybutu userId jest nieprawidłowy. | Podany identyfikator użytkownika nie jest liczbą. | |
513 | AttributeFormatError | Format metadanych atrybutów jest nieprawidłowy. | Metadane nie są tablicą. | |
GetVersionAsyncThrottle | GetVersionAsync prośba upuszczona.Żądanie zostało ograniczone.: | GetVersionAsync() wniosek przekroczył maksymalny rozmiar kolejki i Roblox nie jest w stanie przetworzyć żądań przy obecnym przepustowości. | ||
GetVersionAtTimeAsyncThrottle | GetVersionAtTimeAsync prośba upuszczona.Żądanie zostało ograniczone.: | GetVersionAtTimeAsync() wniosek przekroczył maksymalny rozmiar kolejki i Roblox nie jest w stanie przetworzyć żądań przy obecnym przepustowości. | ||
ListDataStoresAsyncThrottle | ListDataStoresAsync prośba upuszczona.Żądanie zostało ograniczone.: | ListDataStoresAsync() wniosek przekroczył maksymalny rozmiar kolejki i Roblox nie jest w stanie przetworzyć żądań przy obecnym przepustowości. | ||
ListKeysAsyncThrottle | ListKeysAsync prośba upuszczona.Żądanie zostało ograniczone.: | ListKeysAsync() wniosek przekroczył maksymalny rozmiar kolejki i Roblox nie jest w stanie przetworzyć żądań przy obecnym przepustowości. | ||
ListVersionsAsyncThrottle | ListVersionsAsync prośba upuszczona.Żądanie zostało ograniczone.: | ListVersionsAsync() wniosek przekroczył maksymalny rozmiar kolejki i Roblox nie jest w stanie przetworzyć żądań przy obecnym przepustowości. | ||
RemoveVersionAsyncThrottle | RemoveVersionAsync prośba upuszczona.Żądanie zostało ograniczone.: | RemoveVersionAsync() wniosek przekroczył maksymalny rozmiar kolejki i Roblox nie jest w stanie przetworzyć żądań przy obecnym przepustowości. | ||
InvalidTimestamp | Datum musi być pozytywne i nie więcej niż dziesięć minut w przyszłości.: | Datum czasu przekazane do GetVersionAtTimeAsync() nie było ważne. |
Kody błędów serwera
Nazwa błędu | Komunikat o błędzie | Notatki |
---|---|---|
DatastoreThrottled | Szybkość żądań przekracza maksymalną dozwoloną dla datastore. | Zbyt wiele żądań zostało wysłane do pojedynczego magazynu danych. |
InternalServerError | Wystąpił błąd wewnętrznego serwera. | Okazjonalny błąd na serwerach Roblox. Spróbuj ponownie, idealnie z wykładniczym odrzuceniem. |
InvalidPlace | Podany miejsce jest nieprawidłowe. | Nie ma pasującego ID wszechświata dla miejsca. Spróbuj ponownie później. |
InvalidTarget | Podany cel jest nieważny. | Nazwa klucza sklepu danych złożonego przekracza ograniczenie do 50 znaków. |
InvalidUniverse | Dostarczony wszechświat jest nieważny. | Nie ma pasującej identyfikacji miejsca dla wszechświata. Spróbuj ponownie później. |
InvalidUserIds | Podane ID użytkownika mają nieważny format. | Nie udało się przetworzyć identyfikatorów użytkownika. |
KeyThrottled | Szybkość żądań przekracza maksymalną dozwoloną dla klucza. | Szybkość żądań przekracza maksymalną dozwoloną szybkość żądań dla pojedynczego klucza. |
KeyNotFound | Żądany klucz nie istnieje. | Klucz nie istnieje. |
N/A | Nie ma stron do przesunięcia do przodu. | Ten błąd występuje, gdy na ostatniej stronie wywołasz Pages:AdvanceToNextPageAsync() . |
Greny
Modele danych mają ograniczenia .Jeśli doświadczenie przekracza te limity, usługa automatycznie ogranicza użycie przechowywania danych doświadczenia i powoduje, że przyszłe żądania zostaną umieszczone w jednej z następujących kolejek:
- Ustaw
- Zamówiono zestaw
- Otrzymaj
- Zamówiono otrzymanie
Żądania w kolejce są obsługiwane w kolejności, w jakiej są otrzymywane.Wezwana funkcja nadal przynosi wyniki tak długo, jak jej żądanie jest nadal w kolejce.Jeśli klucz magazynu danych jest ograniczony, wniosek jest umieszczany w kolejce, ale tymczasowo pomijany.
Każda kolejka ma limit 30 żądań.Gdy osiągnięto limit kolejki, żądania zawodzą z kodem błędu w przedziale 301-306, co oznacza, że żądania zostały całkowicie odrzucone.
Ograniczenia serwera
Każdy serwer może otrzymać pewną liczbę żądań przechowywania danych w oparciu o typ żądania i liczbę użytkowników.Użyj GetRequestBudgetForRequestType(), aby potwierdzić liczbę żądań przechowywania danych, które obecne miejsce może wykonać.
Dla każdego typu żądania limit jest dzielony między wszystkie wymienione funkcje.
Typ żądania | Funkcje | Żądania na minutę |
---|---|---|
Otrzymaj | GetAsync() | 60 + numPlayers × 10 |
Ustaw | Class.GlobalDataStore:SetAsync()|SetAsync()``Class.GlobalDataStore:IncrementAsync()|IncrementAsync()``Class.GlobalDataStore:UpdateAsync()|UpdateAsync()``Class.GlobalDataStore:RemoveAsync()|RemoveAsync() | 60 + numPlayers × 10 |
Zostań sortowany | GetSortedAsync() | 5 + numer graczy × 2 |
Zdobądź wersję | Class.DataStore:GetVersionAsync()|GetVersionAsync()``Class.DataStore:GetVersionAtTimeAsync()|GetVersionAtTimeAsync() | 5 + numer graczy × 2 |
Lista | Class.DataStoreService:ListDataStoresAsync()|ListDataStoresAsync()``Class.DataStore:ListKeysAsync()|ListKeysAsync()``Class.DataStore:ListVersionsAsync()|ListVersionAsync() | 5 + numer graczy × 2 |
Usuń | RemoveVersionAsync() | 5 + numer graczy × 2 |
Ograniczenia danych
Magazyny danych ograniczają, ile danych można użyć na każdą pozycję.
Nazwa magazynu danych, nazwa klucza i zakres muszą wszystkie być w ramach pewnej długości znaków. Użyj string.len(), aby sprawdzić ich długość.
Dane (wartość klucza) są również przechowywane jako ciąg, niezależnie od ich początkowego typu.Możesz sprawdzić rozmiar danych za pomocą funkcji JSONEncode(), która konwertuje dane Luau na znormalizowany JSONowy stół.
Składnik | Maksymalna liczba znaków |
---|---|
Nazwa przechowywania danych | 50 |
Nazwa klucza | 50 |
Zakres | 50 |
Dane (wartość klucza) | 4,194,304 na klucz |
Ograniczenia metadataów
Ograniczenia dotyczące liczby znaków w metadanych zdefiniowanych przez użytkownika.
Składnik | Maksymalna liczba znaków |
---|---|
Nazwa klucza | 50 |
Wartość | 250 |
Pary klucz-wartość | 300 |
Ograniczenia wydajności
Ograniczenia przepustowości na klucz zapewniają, że wydajność jest optymalna na serwerach Roblox.Każdy limit dotyczy każdego klucza na wszystkich serwerach w doświadczeniu i odświeża się z czasem.
Roblox analizuje użycie kwoty związanej z kluczem w ciągu ostatnich 60 sekund.Jeśli użycie, w tym bieżące żądanie, jest w granicach limitu przepustowości, żądanie jest zatwierdzone.Jeśli zużycie przekracza limit, wniosek jest odrzucony.
Typ żądania | Ogranicz |
---|---|
Przeczytaj | 25 MB na minutę |
Napisz | 4 MB na minutę |
Ograniczenia przechowywania
Obecnie nie ma wymuszonych ograniczeń dotyczących przechowywania danych w magazynach danych.