Herokuのmigrate時のエラー(Gem::LoadError: Specified 'postgresql')を解決
はじめに
Heroku上でmigrateを実行した際にエラーになったので備忘録としてメモしておく。
環境
ruby 2.4.3p205
Rails 5.1.4
Mac OS X 10.13.3
エラー内容
migrate時にエラー
postgresqlがアダプタに指定されているのにgemがロードできないのでGemfileに「gem 'pg'」を追加せよとのこと。gem 'pg'は入れてあったので疑問に思ったが、その後のメッセージにて、バージョンに言及されていた。バージョンが1.0.0になっているが、~> 0.18に落とす必要がある。
% heroku run rake db:migrate Running rake db:migrate on ⬢ xxxxxx-xxxxxx-xxxxx... up, run.4943 (Free) rake aborted! Gem::LoadError: Specified 'postgresql' for database adapter, but the gem is not loaded. Add `gem 'pg'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord). (省略) Caused by: Gem::LoadError: can't activate pg (~> 0.18), already activated pg-1.0.0. Make sure all dependencies are added to Gemfile.
pg gemのバージョンを指定
gem 'pg'
を
gem 'pg', '~> 0.18'
へ変更
bundle installを実行
ひとまずローカル環境でbundle installし、pg gemのバージョンが1.0.0から0.21.0へ変更されたことを確認した。
% bundle install (省略) Fetching pg 0.21.0 (was 1.0.0) (省略)
コミットしてHerokuへアップロード
% git add . % git commit -m "Changed pg gem version" [21:48:05] % git push heroku master
migrate再実行
再度herokuにてmigrateを実行し、無事に処理が完了したことを確認した。
% heroku run rake db:migrate [21:49:05] Running rake db:migrate on ⬢ xxxxxx-xxxxxx-xxxxx... up, run.3942 (Free) (省略) (1.2ms) COMMIT (0.6ms) SELECT pg_advisory_unlock(2211240757154865870)