Skip to Content
🔥 Nová dokumentace BlazeHost.cz je online — prohlédnout

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é hesloPřegeneruj v panelu
Špatný uživatelZkontroluj přesný název (s12345_user)
Připojení z nepovolené IPVzdá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]/databaze

Too many connections

ERROR 1040 (HY000): Too many connections

Aplikace 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_fivem

Otazní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 repaired
CHECK 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.sql

Pomalé 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. mysqldump trvá vteřiny.
  • Nepouštěj DROP TABLE na 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.

Související články