環境
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 -u root -p -h db
pass入力
入れた!
dbって(database.yml)_default_hostに書いたやつ?、、
やっとmysqlに入った
データベース一覧を見る
SHOW databases;
何個もあるけど何これ、、。
あと今更だけど、db/mysql_data 見ると大量にデータある。。
作った覚えはない。自動バックアップのせい、、?
とりあえずデータベースを削除していく。
DROP DATABASE IF EXISTS `app_development-3`;
データベースを新しく作る。
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)
データベースを新しく作る。
できた!
そしてマイグレーション!
エラー消えた!
ひとまず終わり。。。
今回みたいに何もしていないのにエラー出る可能性が今後もあるかもしれない。
それで挫折してしまうことを考えるとすごく怖い。一人じゃわからない。