症状
Windows環境でrails db:resetしたとき、下記エラーが表示されてしまいました。
マイグレーションファイルを更新して、データベースにあるテーブルの内容を更新したく、rails db:resetを実行しました。
ターミナル
rails db:reset
Permission denied @ apply2files - C:/Users/ユーザー名/environment/sampleApp/db/development.sqlite3
Couldn't drop database 'db/development.sqlite3'
rails aborted!
Errno::EACCES: Permission denied @ apply2files - C:/Users/ユーザー名/environment/sampleApp/db/development.sqlite3
bin/rails:4:in `<main>'
Tasks: TOP => db:drop:_unsafe
(See full trace by running task with --trace)
以下のコマンドで検索すると、どうやらRails自体のバグがあるようで、Windows環境で特定のコマンドを実行しようとすると、上記のようなエラーが発生するようです。
該当コマンドは以下です。
対象コマンド
rails db:drop
rails db:reset
rails db:migrate:reset
今回はrails db:resetが該当します。
解決方法
railsのdbのフォルダに移動し、手動でデータベースを削除する必要があるとのこと。
実際にやってみると、正常にデータベースが削除できました。
del development.sqlite3
migrationファイルを編集し、下記コマンドを実行すると正常にテーブルが更新できました。
rails db:migrate
参考
【Ruby on Rails】rails db:dropコマンドを実行したとき、エラーメッセージ「Couldn’t drop database ‘db/development.sqlite3’ rails aborted!」が表示されてしまう原因と解決策をお伝えします
https://www.tairaengineer-note.com/rails-couldnt-drop-database/