Oprava hlášení "SQLSTATE[HY000] [1049] Neznámá databáze" v systému Laravel

Oprava SQLSTATE[HY000] [1049] Unknown Database v Laravel - Deep Dive Při práci se systémem Laravel se můžete setkat s následující chybou: SQLSTATE[HY000] [1049] Neznámá databáze '...

Poptat web

25. 09. 2025

Oprava hlášení "SQLSTATE[HY000] [1049] Neznámá databáze" v systému Laravel

Oprava SQLSTATE[HY000] [1049] Unknown Database v Laravel - Deep Dive

Při práci se systémem Laravel se můžete setkat s následující chybou: SQLSTATE[HY000] [1049] Neznámá databáze 'mydatabase'

To znamená, že databázi, kterou má Laravel používat, nelze v MySQL/MariaDB najít. Níže je uveden podrobnější průvodce, který kombinuje moudrost komunity, běžná úskalí a specifické opravy zaměřené na Laravel.

Proč může Laravel vyhodit tuto chybu

Zde jsou uvedeny opakující se příčiny v nastaveních Laravel:

  • Zbytky výchozí databáze v konfiguraci Laravel config/database.php často nastavuje výchozí hodnoty jako:

    'database' => env('DB_DATABASE', 'laravel'),
    'username' => env('DB_USERNAME', 'laravel'),

    Pokud vaše .env není načtena nebo je konfigurace uložena v mezipaměti, může Laravel přejít zpět na funkci laravel a pokusit se k němu připojit.

  • Konfigurace v mezipaměti nebo zastaralá konfigurace Změna .env nestačí, pokud je konfigurace uložena v mezipaměti. Je třeba vymazat konfigurační mezipaměť Laravelu:

    php artisan cache:clear
    php artisan config:cache

    Tím donutíte Laravel, aby znovu přečetl .env a obnovit jeho interní nastavení.

  • Špatně .env nesoulad nastavení / portů Pokud váš server MySQL běží na nestandardním portu (např. 3308 namísto 3306), je v systému Laravel použita funkce DB_PORT se musí shodovat. Také dvakrát zkontrolujte, zda v textu nejsou překlepy, odlehlé mezery nebo zalomení řádků. .env soubor.

  • Databáze nebyla vytvořena nebo zrušena Pokud nakonfigurovaná databáze na serveru neexistuje, Laravel se nebude moci připojit. Vytvoření databáze obvykle problém vyřeší.

Opravy krok za krokem zaměřené na Laravel

Zde je kontrolní seznam, podle kterého můžete tuto situaci spolehlivě vyřešit:

Krok Akce Proč / Poznámky
1 Otevřete si .env a ověřit údaje v databázi Zajistit DB_DATABASE, DB_USERNAME, DB_PASSWORD, DB_HOST, DB_PORT jsou přesně správné a odpovídají vašemu nastavení MySQL
2 Vytvoření databáze, pokud chybí CREATE DATABASE my_app_db; prostřednictvím klienta MySQL nebo uživatelského rozhraní správce
3 Vymazání mezipaměti Laravelu a opětovné uložení konfigurace do mezipaměti php artisan cache:clear a pak php artisan config:cache, čímž se zajistí, že Laravel načte nová nastavení.
4 Restartování vývojového serveru / služeb Pokud je spuštěn prostřednictvím php artisan serve nebo Docker, restartujte, aby se změny uplatnily
5 Ověření shody portu a hostitele Pokud MySQL naslouchá na jiném než výchozím portu, vaše DB_PORT musí odrážet
6 Udělení potřebných oprávnění uživateli DB GRANT ALL PRIVILEGES ON my_app_db.* TO 'my_user'@'localhost'; FLUSH PRIVILEGES;
7 Spouštění migrací php artisan migrate pro spuštění schématu

Jak řešit

  1. Správně .env

    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306 # or whatever your MySQL uses
    DB_DATABASE=my_app_db
    DB_USERNAME=my_user
    DB_PASSWORD=secret
  2. Zkontrolujte, zda databáze existuje

    CREATE DATABASE my_app_db;
  3. V případě potřeby propláchněte privilegia

    GRANT ALL PRIVILEGES ON my_app_db.* TO 'my_user'@'localhost';
    FLUSH PRIVILEGES;
  4. Vymazání mezipaměti Laravelu a opětovné načtení konfigurace

    php artisan cache:clear
    php artisan config:cache
  5. Restartujte nebo znovu načtěte server / prostředí Pokud používáte php artisan serve nebo Docker, zastavit a znovu spustit.

  6. Kontrola přepisů konfigurace Vyhledávání duplicit .env soubory nebo konfigurační cesty specifické pro dané prostředí, které by mohly přepsat zamýšlené nastavení.

  7. Spouštění migrací

    php artisan migrate

Pokud se po provedení všech těchto kroků chyba stále objevuje, překontrolujte, zda se ve vašem textu nenachází zbloudilé mezery nebo skryté znaky. .env klíče.

Původní článek publikoval Nabil Hassen.