ポンコツすぎる過去の自分に贈る。
原因
-
原因 1. コンテナ上でテストを走らせる際、
binding pry
で実行を停止しながらデバッグ等を行っていた。 -
原因 2. あろうことか、コンテナを停止せず(binding pry で止まっている状態)、新しいターミナルを立ち上げ、再度テストを実行。
-
原因 3. コンテナが乱立し、同タイミングで複数コンテナがテスト用データの作成等で、 同じDBのテーブルをいじろうとしている状態に。
- その結果、引き起こされたのが
Mysql2::Error::TimeoutError: Lock wait timeout exceeded
解決策
-
docker-compose ps
で起動中・停止中のコンテナ一覧を確認。破棄されていないコンテナが大量に -
docker-compose kill 対象コンテナ
で、コンテナを削除。(もしくは、テストをdocker-compose run --rm rspec
等で実行していた場合、docker-compose stop 対象コンテナ
で自動的に破棄されます)
戒め
過去のポンコツすぎる自分、コンテナを停止しないままターミナルを破棄って、新しいターミナルでコンテナを実行しようだなんて思わないように。