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.sql9. Docker環境での設定ミス
DockerのMySQLコンテナで、`docker-compose.yml`内のDB名が未作成で起動されるとエラーになる。
environment:
- MYSQL_DATABASE=example_db未指定または別名の指定に注意。
10. MySQLサーバーが起動しているか確認する
そもそもMySQLが起動していないとエラーの原因になることもある。
sudo systemctl status mysql11. 既存のSQLファイルに存在しないDB名が記述されている場合
SQLファイルの先頭に指定されているDB名が、MySQLに存在していないと以下のようなエラーになる。
USE example_db;
-- ここでERROR 1049が発生事前にCREATE DATABASEを入れておく必要がある。
12. ユーザーに権限がない場合も似たエラーに見える
アクセス権限が不足していると別のエラーコードになるが、原因の切り分けとしてユーザーの権限も確認しておく。
SHOW GRANTS FOR 'user'@'localhost';-
前の記事
PostgreSQLでの『ERROR: prepared statement already exists』の原因と対処法 2025.08.21
-
次の記事
PostgreSQL「cannot drop the currently open database」の原因と対処 2025.08.22
コメントを書く