ヨージとプログラミング

プログラミング勉強の記録

【Rails】ActiveRecord::StatementInvalid: Mysql2::Error: Error dropping database (can't rmdir './app_name_test', errno: 39): DROP DATABASE IF EXISTS `app_name_test`

RSpecを実行しようとしてエラー発生

RSpecをdocker環境で実行しようとしてタイトルのようなエラーが発生しました。

>>> docker-compose run web rspec spec/system/records_spec.rb  

rails aborted!
ActiveRecord::StatementInvalid: Mysql2::Error: Error dropping database (can't rmdir './app_name_test', errno: 39): DROP DATABASE IF EXISTS `app_name_test`

テスト環境のdbに何らかの異常があると思い、とりあえずリセットを試みました。
しかし、いずれのコマンドも同様のエラーになりました。

# すべてエラーに!
docker-compose run web rails db:reset RAILS_ENV=test
docker-compose run web rails db:drop RAILS_ENV=test
docker-compose run web rails db:migrate RAILS_ENV=test

mysql/app_name_testを手動削除して元気!

結局、ローカルに存在する、テストのデータベースを右クリック削除し、docker-compose run web rails db:create RAILS_ENV=test(からのmigrate)することで解決しました。
[:300] RSpecも無事に動くようになりました。