やすまんの技術ブログ

駆け出しエンジニアが日々学んだこと、わからなかったことなどをまとめておくブログ。忘備録としても使います。

PendingMigrationErrorの解決方法。

f:id:yasuMen:20191216202218p:plain

 

経緯

アプリにサインアップ機能を付け加えるために、

 

ターミナルで

$ 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したら

 

f:id:yasuMen:20191216202218p:plain

ターミナルでは

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をすれば解決できる。

 

少しのミスでこんなに時間を喰われるとは。