経緯
docker-compose up -d コマンドを実行。
done となったためmysqlコマンドで接続しようとしたらエラーとなり接続出来なかった。
docker-compose.yml
version: '3'
services:
# MySQL
db:
image: mysql:8.0.22
ports:
- "3306:3306"
container_name: mysql_host
environment:
MYSQL_ROOT_PASSWORD: mysql
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
volumes:
- ./db/data:/var/lib/mysql
- ./db/my.cnf:/etc/mysql/conf.d/my.cnf
- ./db/sql:/docker-entrypoint-initdb.d
調べたこと
docker-compose ps コマンドで見たらStateが「Exit 1」となっていた。
Name Command State Ports
------------------------------------------------------------
mysql_host docker-entrypoint.sh mysql ... Exit 1
docker-compose logs コマンドを見たら下記のようなエラーが発生していた。
mysqld: Can't open file: 'mysql.ibd' (errno: 0 - )
試したこと
①:dataディレクトリにある、「mysql.ibd」ファイルを削除
→docker-compose up -d コマンドを試しても解決せず
②:dataディレクトリの削除と、「docker-compose kill」コマンドを実施
→解消!
②の後、「docker-compose up -d」コマンド実施して「docker-compose ps」コマンドでStateがUpになっていることを確認
最後に
もしかしたら「mysql.ibd」ファイル削除後に「docker-compose kill」コマンドを行えば解決したかもしれません。
とはいえibdファイル削除のみだと結局テーブル作り直しなので構築初期段階なら労力は変わらないかなと考えています。
原因につちえは何も分かりません 思い当たる節といえばDockerfileで類似のMySQLコンテナを立てていたのでそれが原因だったかもしれません。