4
5

More than 3 years have passed since last update.

rails db:migrate:resetでのエラー

Posted at

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

2020年8月10日 Progate Lv.226
rails db:migrateでのエラーという記事でマイグレーションファイルを操作するときにエラーが起きて、rails db:migrate:resetで対処すると述べたが、このrails db:migrate:resetを使おうとするとエラーが出たのでこれの対処をする。

エラー内容

 Rails自体のバグ(?)で、Windowsでは自分がアクセスしてるファイルを削除できないことが問題になっているみたい、、

ターミナル
$ rails db:migrate:reset
C:/Ruby26-x64/lib/ruby/2.6.0/x64-mingw32/etc.so: warning: already initialized constant Struct::Passwd
le::VERSION
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/forwardable-1.3.1/lib/forwardable/version.rb:3: warning: 
previous definition of VERSION was here
C:/Ruby26-x64/lib/ruby/2.6.0/forwardable.rb:117: warning: already initialized constant Forwardable::FORWARDABLE_VERSION
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/forwardable-1.3.1/lib/forwardable/version.rb:4: warning: 
previous definition of FORWARDABLE_VERSION was here
DEPRECATION WARNING: Single arity template handlers are deprecated. Template handlers must      
now accept two parameters, the view object and the source for the view object.
Change:
  >> Coffee::Rails::TemplateHandler.call(template)
To:
  >> Coffee::Rails::TemplateHandler.call(template, source)
 (called from <top (required)> at C:/Users/Owner/mysite/ruby/travel/Rakefile:6)
Permission denied @ apply2files - C:/Users/Owner/mysite/ruby/travel/db/development.sqlite3      
Couldn't drop database 'db/development.sqlite3'
rails aborted!
Errno::EACCES: Permission denied @ apply2files - C:/Users/Owner/mysite/ruby/travel/db/development.sqlite3
bin/rails:4:in `require'
bin/rails:4:in `<main>'
Tasks: TOP => db:drop:_unsafe
(See full trace by running task with --trace)

解決方法(結論)

 db/development.sqlite3を手動で削除したらデータベースをリセットすることができた。

ターミナル
$ rm db/development.sqlite3
$ bin/rails db:setup

対処法

1.rails db:resetをする

 rails db:migrate:resetでデータベースのリセットとmigrateの実行を同時に行うと失敗する。なので、マイグレーションファイル内の実行する順番に問題がある可能性があり、rails db:resetrails db:migrateを分けて実行すると解決する。

ターミナル
$ rails db:reset

$ rails db:migrate

 私はこれでは解決しなかった。

2. rails db:resetの代わりに以下のコマンドを(これで解決!)

ターミナル
$ rm db/development.sqlite3
$ bin/rails db:setup

3. rails db:migrate:resetの代わりに以下のコマンドを

ターミナル
$ rm db/development.sqlite3
$ bin/rails db:create db:migrate

rails db:resetとrails db:migration:resetの違い

rails db:reset:db/schema.rbを元にデータベース作成するdb/migrate/〇〇.rbは使わない。
rails db:migrate:reset:データベースを削除した後にdb/migrate/〇〇.rbを古い順から実行する。

参考文献

db:migrate:reset でエラーが出ます
rails db:migrate:resetできなかったのでrails db:resetした

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5