症状
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