MySQLのエラー『エラー1049: Unknown Database』の解決方法

MySQLのエラー『エラー1049: Unknown Database』の解決方法

MySQLで「エラー1049: Unknown Database」が表示される場合、指定されたデータベースが存在しないことが原因。誤ったデータベース名の指定や、データベースが削除された、またはまだ作成されていないケースがほとんど。

1. エラー内容の例

ERROR 1049 (42000): Unknown database 'example_db'

上記のように、指定したデータベース名がMySQLに存在しないときに発生する。

2. 発生条件

  • 存在しないデータベース名で接続を試みた
  • 削除済みのデータベース名を使用した
  • スペルミスや大文字・小文字の違い
  • MySQLの初期化忘れやインポート忘れ

3. 現在のデータベース一覧を確認する

実在するデータベースを確認するためには、以下のSQLを使用する。

SHOW DATABASES;

4. 正しいデータベース名で接続する

mysqlコマンドで接続する際に、スペルミスがあるとこのエラーになる。

mysql -u root -p -D correct_db_name

-Dで指定するデータベース名に注意。

5. 新規にデータベースを作成する

まだ作成されていない場合は、新しく作成する。

CREATE DATABASE example_db;

作成後に再度接続すればエラーは出ない。

6. 接続設定ファイルの確認

アプリケーションの設定ファイルや`.env`ファイルで指定されているDB名が正しいかを確認する。

DB_DATABASE=example_db

環境によっては再読み込みが必要になる。

7. 大文字小文字の扱いに注意(Linux環境)

Linuxではデータベース名の大文字・小文字が区別される。

  • MySQLでは、Windows:大文字小文字を区別しない
  • Linux:大文字小文字を区別する

8. データベースのバックアップがある場合はリストア

バックアップから復元する例:

mysql -u root -p -e "CREATE DATABASE example_db"
mysql -u root -p example_db < /backup/example_db.sql

9. Docker環境での設定ミス

DockerのMySQLコンテナで、`docker-compose.yml`内のDB名が未作成で起動されるとエラーになる。

environment:
  - MYSQL_DATABASE=example_db

未指定または別名の指定に注意。

10. MySQLサーバーが起動しているか確認する

そもそもMySQLが起動していないとエラーの原因になることもある。

sudo systemctl status mysql

11. 既存のSQLファイルに存在しないDB名が記述されている場合

SQLファイルの先頭に指定されているDB名が、MySQLに存在していないと以下のようなエラーになる。

USE example_db;
-- ここでERROR 1049が発生

事前にCREATE DATABASEを入れておく必要がある。

12. ユーザーに権限がない場合も似たエラーに見える

アクセス権限が不足していると別のエラーコードになるが、原因の切り分けとしてユーザーの権限も確認しておく。

SHOW GRANTS FOR 'user'@'localhost';