LaravelでSQLSTATE[HY000] [1049] Unknown database 'database':問題と解決策



1. SQLSTATE[HY000] 問題の概要
このエラーは、Laravelアプリケーションが接続しようとしているデータベースが存在しない場合に発生します。具体的には、データベース接続を試みる際に、指定されたデータベース名がMySQLサーバーに見つからないときに出現します。
1.1. 原因
次のような原因が考えられます。
- データベースが存在しない
- データベースがMySQLサーバー上に作成されていない。
- .envファイルの設定ミス
- Laravelの環境設定ファイルである
.env
ファイルに誤ったデータベース名が記載されている。
- Laravelの環境設定ファイルである
- キャッシュの問題
- 環境設定がキャッシュされており、更新された
.env
ファイルの内容が反映されていない。
- 環境設定がキャッシュされており、更新された


2. 解決策
2.1. データベースの存在確認
まず、MySQLにログインし、指定されたデータベースが存在するか確認します。
指定されたデータベースがリストにない場合、以下のコマンドでデータベースを作成します。
phpmyadminで確認する場合はhttp://localhost/phpmyadmin/に移動して、データベースが存在するか確認します。
2.1.1. Xamppを使用している場合
Xamppを使用している場合は、shellをクリックしてログインしてください。

2.2. .envファイルの確認
.env
ファイルを開き、DB_DATABASE
の値が正しいか確認します。


DB_DATABASE
の値が実際に存在するデータベース名と一致していることを確認してください。
2.3. キャッシュのクリア
環境設定がキャッシュされている場合、設定変更が反映されないことがあります。以下のコマンドでキャッシュをクリアします。
このコマンドを実行することで、新しい設定が適用されます。
2.4. マイグレーションの実行
データベースが存在し、.env
ファイルの設定が正しいことを確認したら、データベースマイグレーションを実行してテーブルを作成します。

3. エラーの検証と修正
SQLSTATE[HY000] [1049] Unknown database ‘database’ というエラーを実際に発生させます。
LaravelでSQLSTATE[42S02] Table ‘database.table’ doesn’t exist:問題と解決策
と似たコードを使用します。


3.1. 検証環境
- PHP 8.1.25
- Laravel 10.48.12
- Windows 11
3.2. プロジェクトの作成
まず、エラー検証を行うためのサンプルプロジェクトを作成します。
3.3. .envファイルの編集
存在しないデータベースを作成するために.envファイルを編集します。今回はDB_DATABASEで名前を指定できるので、databaseという名前にします。


3.4. コントローラーの作成
次に、`Users` テーブルに登録されているユーザー数をカウントするコントローラーを作成します。ここでは、例として `SampleController` を作成します。
作成したコントローラーに以下のメソッドを追加します。
このコードは、User テーブルのレコード数を取得してレスポンスとして返すプログラムです。

3.5. ルーティング
次に、ルーティングを設定します。`web.php` ファイルで以下のようにルーティングを追加してください。
この設定により、ブラウザで http://127.0.0.1:8000/
にアクセスすると、SampleController の index メソッドが実行されます。
3.6. エラーの発生と検証
まず、ターミナルで以下のコマンドを実行します。
次に、ブラウザで http://127.0.0.1:8000/
にアクセスします。すると、”SQLSTATE[HY000] [1049] Unknown database ‘database'” というエラーが発生します。
このエラーは、database
が存在しないために発生します。したがって、マイグレーションを行う必要があります。
ターミナルで以下のコマンドを実行して、マイグレーションを実行します。
Warn(警告)としてデータベースが存在しないということがでてきますが、yesを選択してマイグレーションを実行します。
これにより、database
が作成されて、テーブルが作成されます。
再度 http://127.0.0.1:8000/
にアクセスして、エラーが解消されたことを確認します。
ということで、何もしていないので登録数が0として表示されました。


3.7. まとめ
SQLSTATE[HY000] [1049] Unknown database ‘database’エラーは、主にデータベースの存在確認や環境設定の修正によって解決できます。これらを確認し、問題が解決するか試してみてください。