1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Mysql2::Error: Unknown database 'app_development'が急に出た

Last updated at Posted at 2022-03-18

環境

macOS Monterey 12.3
docker-compose 2.2.3
mysql 8.0
rails 6.1.4
rails初心者が突然のエラーに出会い、もうrails諦めようと思ったので、経緯を含めて書きました。
半日くらいでエラー解消。

困ったこと

アプリ作成中に突然エラーが出ました。

Mysql2::Error: Unknown database 'app_development'

app_developmentなんてデータベースありません。

かな?いや、さっきまでずっと使えてたのに、、

画像イメージ

試したこと

1. とりあえずコマンド打った

docker-compose exec web rails db:reset
docker-compose exec web rails db:migrate:reest
docker-compose exec web rails db:create

どれも共通のエラー

ターミナル
Mysql2::Error: Schema directory './app_development' already exists. This must be resolved manually (e.g. by moving the schema directory to another location).

このディレクトリは既に存在します。手動で解決しましょう。

かな?んー、、


docker-compose exec web rails db:create:all

ターミナル
This task only modifies local databases. app_development is on a remote host.
This task only modifies local databases. app_test is on a remote host.

このタスクはローカルのデータベースのみを変更します。app_developmentはリモートホストにあります。

んー、、

1. とりあえずmysqlに入ってみた

シェルに入る

ターミナル
docker-compose run --rm web bash

とりあえずmysqlに入るコマンド 何だったか忘れたけど打っていった。


mysql -u root -p app_development
pass入力すると、

ターミナル
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/run/mysqld/mysqld.sock' (2)

mysqlが起動できない
エラー、、


Docker MySQL ではlocalhostでのアクセスは禁止されている
mysql -u root -h 127.0.0.1 -p
pass入力
同じエラー、、


Dockerコンテナ上のMySQLにホストOSから接続できない
mysql -u root -p -h 127.0.0.1 -P 3306
pass入力
同じエラー、、、


mysqlを立ち上げる

sql
mysql -u root -p -h db

pass入力
入れた!
dbって(database.yml)_default_hostに書いたやつ?、、


やっとmysqlに入った

データベース一覧を見る

sql
SHOW databases;

スクリーンショット 2022-03-19 6.09.44.png

何個もあるけど何これ、、。
あと今更だけど、db/mysql_data 見ると大量にデータある。。
作った覚えはない。自動バックアップのせい、、?

とりあえずデータベースを削除していく。

sql
DROP DATABASE IF EXISTS `app_development-3`;

他も削除していって、こうなった。
スクリーンショット 2022-03-19 6.10.10.png

データベースを新しく作る。

sql
CREATE DATABASE app_development;

またエラーかよ、、

ターミナル
ERROR 3678 (HY000): Schema directory './app_development' already exists. This must be resolved manually (e.g. by moving the schema directory to another location).

もうわからないので、app_developmentを手動で削除した。 (db/mysql_data/app_development)

データベースを新しく作る。

できた!

そしてマイグレーション!

エラー消えた!

ひとまず終わり。。。
今回みたいに何もしていないのにエラー出る可能性が今後もあるかもしれない。
それで挫折してしまうことを考えるとすごく怖い。一人じゃわからない。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?