PendingMigrationErrorの解決方法。
経緯
アプリにサインアップ機能を付け加えるために、
ターミナルで
$ rails g migration AddNameToUser name: string
入力後
applicationcontrollerに
before_action :configure_permitted_parameters, if: :devise_controller? protected def configure_permitted_parameters devise_parameter_sanitizer.permit(:sign_up, keys: [:name]) end end
と入力し
rake db:migrateしたら
ターミナルでは
StandardError: An error has occurred, all later migrations canceled:
Mysql2::Error: Duplicate column name 'name': ALTER TABLE `users` ADD `name` varchar(255)
が表示された。
原因
誤ってマイグレーションファイルを2つ作ってしまったため(一つ最初に作ってたことを忘れていた。)
解決方法
まずは、もう一度rake db:migrateをするが解決できず。
続いては
1,作成したマイグレーションファイルを削除する
2,rake db:migrate:resetをする。
3,rake db:migrateをする。
これでも解決できず。
よく見てみると
`check_pending!': Migrations are pending; run 'bin/rake db:migrate RAILS_ENV=test' to resolve
との記載が、
これは、RAILS_ENV=testが途中になってるよーと教えてくれていることが判明。
ターミナルで
$ rails db:migrate RAILS_ENV=test
をして
rake db:migrateをすれば解決できる。
少しのミスでこんなに時間を喰われるとは。