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.
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.
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
MySQL nie jest uruchomiony
Najczęstsze na lokalnej maszynie po restarcie albo na świeżej maszynie, gdzie usługi nigdy nie włączono.
- 2
Connection string jest zły albo źle sformułowany
set mysql_connection_stringmusi 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
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
Użytkownik nie ma praw z tego hosta
Uprawnienia MySQL są per host. Użytkownik utworzony jako
user@localhostnie połączy się z innej maszyny nawet z poprawnym hasłem. - 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 FixerDla tego rodzaju błędu Script Optimizer wyłapuje wzorce zapytań, które to powodują.