Database error
Chyby databáze mají obvykle jednu z pěti příčin. Chybová hláška ti řekne, o kterou jde.
Access denied for user
ERROR 1045 (28000): Access denied for user 'user'@'11.22.33.44'| Příčina | Řešení |
|---|---|
| Špatné heslo | Přegeneruj v panelu |
| Špatný uživatel | Zkontroluj přesný název (s12345_user) |
| Připojení z nepovolené IP | Vzdálený přístup povolujeme na vyžádání |
Heslo obsahující znaky @, # nebo / je nutné v connection stringu
URL-enkódovat. Jinak se řetězec rozpadne a chyba vypadá jako špatné heslo.
# Heslo "he@slo" v connection stringu
mysql://user:he%[email protected]/databazeToo many connections
ERROR 1040 (HY000): Too many connectionsAplikace neuzavírá spojení nebo jich otevírá příliš mnoho naráz.
Zkontroluj aktuální spojení
SHOW PROCESSLIST;
SHOW STATUS LIKE 'Threads_connected';Restartuj server
Uvolní všechna spojení.
Najdi příčinu
Skript, který otevírá spojení ve smyčce a nezavírá je.
U FiveM nikdy nevolej MySQL.query uvnitř while true do Wait(0) end.
Vyčerpáš spojení během vteřin a celý server přestane reagovat.
Unknown database
ERROR 1049 (42000): Unknown database 'fivem'Databáze má prefix podle služby. Přesný název najdeš v panelu:
s12345_fivemOtazníky nebo zmatené znaky místo diakritiky
Chybí správné kódování.
set mysql_connection_string "mysql://user:heslo@host/db?charset=utf8mb4"A v databázi:
ALTER DATABASE s12345_fivem
CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE users
CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;Používej utf8mb4, ne utf8. MySQL „utf8” je tříbajtové a neuloží emoji ani
některé znaky. Data se tiše ořežou.
Poškozená tabulka
Table './db/users' is marked as crashed and should be repairedCHECK TABLE users;
REPAIR TABLE users;Před REPAIR TABLE vždy udělej dump. Oprava může být destruktivní.
mysqldump -h mysql.blazehost.cz -u s12345_user -p s12345_fivem > pred-opravou.sqlPomalé dotazy
Server se sekne při přihlášení hráče.
-- Najdi pomale dotazy
SHOW FULL PROCESSLIST;
-- Pridej index na casto hledany sloupec
CREATE INDEX idx_users_identifier ON users (identifier);
-- Zkontroluj plan dotazu
EXPLAIN SELECT * FROM users WHERE identifier = 'license:abc';Pokud EXPLAIN ukáže type: ALL, dotaz prochází celou tabulku. Chybí index.
Připojení z aplikace selže, phpMyAdmin funguje
Aplikace se připojuje z jiného hosta. Zkontroluj, zda v connection stringu
nepoužíváš localhost místo mysql.blazehost.cz.
Rychlý test připojení
mysql -h mysql.blazehost.cz -u s12345_user -p -e "SELECT 1;"Vrátí 1 → připojení funguje, problém je v aplikaci.
Tipy
- Zálohuj před každým zásahem.
mysqldumptrvá vteřiny. - Nepouštěj
DROP TABLEna produkci bez zálohy. - Používej prepared statements. Chrání před SQL injection.
Poznámka
Databázi zálohujeme denně spolu se serverem. Před rizikovým importem si udělej vlastní dump.