経緯
マイグレーションのあと勝手にコマンドが入って実行中のタスクをctrl+Cをして強制終了したあとデバイスの導入を継続していたが、下記エラーが発生してdbのマイグレーションを実行しようとしたら実行で きなくなったターミナル
Tasks: TOP => db:migrate:status => db:load_config => environment
(See full trace by running task with --trace)
解決までの道のり
- routes.rbにあるdevise_for :usersというコードを削除する(これでrailsコマンドが使えるようになります!)
- rake db:rollbackでマイグレーションファイルをロールバックする。(これをすることによって先ほど作ったuserテーブルのマイグレーションファイルをなかったことにしましょう。)
- userテーブルを作ったときのマイグレーションファイルを削除する。
- rails d model userを行いuserモデルを削除する。
上記の2の工程で同じエラーが出た。
bundle exec rake db:migrate:status
を実行すると、
ターミナル
database: ファイル名_development
Status Migration ID Migration Name
--------------------------------------------------
up 000 ********** NO FILE **********
down 20230505232327 Devise create users
マイグレーションファイルがupの状態で消されたためエラーになっている様子。
マイグレーションファイルをコマンドで削除してみる
1.まず名前を付けてあげる
touch db/migrate/000_hoge.rb
再度 bundle exec rake db:migrate:status
実行すると以下の結果に
ターミナル
Status Migration ID Migration Name
--------------------------------------------------
up 000 Hoge
down 20230505232327 Devise create users
無事に名前が付きました
その後
bundle exec rake db:migrate:down VERSION=000_Hoge.rb
を実行
ターミナル
rake aborted!
Invalid format of target version: `VERSION=000_Hoge.rb`
/home/user/.rbenv/versions/2.6.5/bin/bundle:23:in `load'
/home/user/.rbenv/versions/2.6.5/bin/bundle:23:in `<main>'
Tasks: TOP => db:migrate:down
(See full trace by running task with --trace)
まだエラー
コマンドの記述間違えたのか?と思いコマンドの記述を下記に変更して実行
rails db:migrate:down VERSION=000
down成功!
この後消していく
rm db/migrate/000_hoge.rb
$:~/ディレクトリ名/ファイル名 rm db/migrate/20230505232327_devise_create_users.rb
$:~/projects/protospace-38955$ bundle exec rake db:migrate:status
database: ファイル名_development
Status Migration ID Migration Name
--------------------------------------------------
大成功!!
これでdeviseの導入から再スタートできそう