THE ORB
Uruchamiam studio

Połączenie z bazą danych nie powiodło się

Twój serwer nie może dosięgnąć swojej bazy danych. Dopóki tego nie naprawisz, nic, co zapisuje albo wczytuje, nie zadziała.

groupsNic się nie zapisuje ani nie wczytujepersonMożesz to naprawić

Zrób najpierw to

Sprawdź, czy baza działa i czy linijka połączenia w server.cfg ma poprawną nazwę użytkownika i hasło.

bug_reportWklej zamiast tego całą konsolę

Co to znaczy

Warstwa bazy danych nie dosięgła MySQL-a albo dosięgła i została odrzucona. Każde zapytanie w każdym zasobie będzie padać, dopóki tego nie naprawisz, więc ściana niepowiązanych błędów bazy pod tym jednym jest oczekiwana i na razie nie warto jej czytać.

Kod błędu node'a mówi, która połowa zawiodła:

ECONNREFUSED — host osiągnięty, nic nie nasłuchuje na tym porcie

ETIMEDOUT — host w ogóle nieosiągnięty (zapora, złe IP)

ENOTFOUND / getaddrinfo — nazwa hosta się nie rozwiązuje

ER_ACCESS_DENIED_ERROR — MySQL osiągnięty, zły użytkownik albo hasło

ER_BAD_DB_ERROR — połączono, ale taka baza nie istnieje

Co to powoduje

Uszeregowane według tego, jak często są odpowiedzią.

  1. 1

    MySQL nie jest uruchomiony

    Najczęstsze na lokalnej maszynie po restarcie albo na świeżej maszynie, gdzie usługi nigdy nie włączono.

  2. 2

    Connection string jest zły albo źle sformułowany

    set mysql_connection_string musi być jedną linią, w server.cfg, przed zasobami, które go używają. Oba formaty działają, ale wersja ze średnikami nie wybacza spacji:

    set mysql_connection_string "mysql://user:password@localhost/database?charset=utf8mb4"
  3. 3

    Hasło ze znakami specjalnymi, nieuciekniętymi

    @, :, / i # wewnątrz hasła psują formę URI. Zakoduj je procentowo albo użyj formy klucz/wartość.

  4. 4

    Użytkownik nie ma praw z tego hosta

    Uprawnienia MySQL są per host. Użytkownik utworzony jako user@localhost nie połączy się z innej maszyny nawet z poprawnym hasłem.

  5. 5

    Baza danych jeszcze nie istnieje

    Połączenie się udaje, a USE pada. SQL frameworka nigdy nie został zaimportowany.

Jak poznać, który jest twój

Czytaj kod, nie zdanie. Potem spróbuj połączyć się tymi samymi danymi z tej samej maszyny:

mysql -h 127.0.0.1 -u twojuser -p twojabaza

Jeśli to też padnie, problemem jest MySQL, a nie FiveM. Uwaga: w uprawnieniach MySQL localhost i 127.0.0.1 to nie to samo.

Gdzie szukać

server.cfg, linia set mysql_connection_string, oraz to, czy oxmysql jest ensureowany przed wszystkim, co odpytuje bazę.

Jak to naprawić

# server.cfg — przed każdym zasobem, który dotyka bazy
set mysql_connection_string "mysql://fivem:pass@127.0.0.1/fivem?charset=utf8mb4"
ensure oxmysql

Nadaj użytkownikowi uprawnienia jak trzeba, jeśli łączy się zdalnie:

CREATE USER 'fivem'@'%' IDENTIFIED BY 'pass';
GRANT ALL PRIVILEGES ON fivem.* TO 'fivem'@'%';
FLUSH PRIVILEGES;

Wciąż utknąłeś na własnym kodzie?

Ta strona mówi, co ten błąd zwykle oznacza. Wklej swoją konsolę do Server Fixera, a uszereguje wszystko, co w niej jest, i powie, co zrobić najpierw; a jeśli wolisz tego nie ruszać, ORBIE naprawi skrypt i odda ci zasób gotowy do wrzucenia.

bug_reportOtwórz Server Fixer

Dla tego rodzaju błędu Script Optimizer wyłapuje wzorce zapytań, które to powodują.

Błędy, które chodzą z tym w parze