2
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.

【docker-compose】 railsで Unknown MySQL server host 'db' (-2)が出た時の対処法

Last updated at Posted at 2021-12-18

概要

ついさっきまで動いていたはずのmysqlコンテナが動かなくなりました。
docker-compose logsを実行すると以下のようになってました。

スクリーンショット 2021-12-18 17.52.47.png

試したこと①

なんとなく下記のエラーが怪しいのでは?と思いib_logfileを削除してみましたがダメでした。

db_1     | 2021-12-18T08:42:07.483929Z 0 [ERROR] InnoDB: redo log file './ib_logfile1' exists. Creating system tablespace with existing redo log files is not recommended. Please delete all redo log files before creating new system tablespace.

実行の手順

$ docker-compose run db bash
$ cd /var/lib/mysql
$ rm ib_logfile0

ここでib_logfile1も削除していればうまくいったかもしれません。

試したこと②

すでに存在するmysqlのコンテナや、イメージが多すぎてエラーが起こっているのではと考えました。

よって存在するコンテナを全て削除

docker rm `docker ps -a -q`

mysqlのイメージを削除

docker rmi <mysqlのイメージ>

そして再度build

docker-compose build
docker-compose up -d

しかしうまくいきません。

解決した方法

docker-compose.ymldb./db-data:/var/lib/mysqlに着目しました。

もう、db-dataを一度最初から作るしかないと考えました。

自分のパソコン側のdb-dataというファイルの名前をdb-data.subにしました。

それによってdocker-compose up -dで新たなdb-dataが作られました。

そして下記コマンドで元通りにできました。

docker-compose up -d

docker-compose run api rails db:create

docker-compose run api rails db:migrate

docker-compose run api rails db:seed

おそらく①でib_logfile1 ib_logfile0を消す方法が最も簡単だったかもしれません。

本番環境では使えないやり方だと思うので、本番環境で行うときは慎重になりたいですね、、、

2
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
2
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?