LoginSignup
14
10

More than 5 years have passed since last update.

rails Herokuでrails db:migrate時に突然エラー発生!! postgresqlバージョン問題 

Posted at

概要

Herokuを利用してアプリを公開しているが、いつも通りモデルを追加してデプロイし、rails db:migrateをしたら以下のようなエラーが発生!

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).

herokuでは、mySQLは使用できず、postgresqlを使用することが推奨されている。
そのため、gemfileにはpgを追加して、postgresqlを使用している。
この環境で今まで動いていたのにいきなりエラーを吐くようになってしまった...
確認してもgem にはpgが書かれているし、エラーログを見てもpgのインストール自体は正常にされている。

いろいろ調べた結果、解決できたので記事にまとめます。
参考サイト:Herokuデプロイ後にdb:migrateが失敗した時の状況とやったこと

原因

原因を簡潔に言うと、pgのバージョンが問題でした。
herokuを使用し始めたときに、gemfileにpgを追加したが、その時にバージョンを指定いていなかった。

Gemfile.rb
gem 'pg', group: :production

こんな感じ。
そして、herokuではデプロイ毎にbundle installが行われる仕様?のようで、いつしかpgのバージョンがアップデートされて、herokuが対応していないものになったらしい。
(ログを確認すると、 pg 0.21.0がインストールされていた。)

なので、対応しているバージョンを指定してインストールする必要があった。
今回は、対応している中で一番最新(っぽい)pg 0.19.0をインストールしたらうまくいった。
やり方は、gemfileを以下のように書き替える。

Gemfile.rb
gem 'pg', '~> 0.19.0', group: :production

無事解決!!
いつから問題が起きていたのだろうか...

感想

herokuを使っていると、たまにこのようなエラーに遭遇して焦る。
そして、いままでは、新しいherokuのアプリを作成してそちらに移行したり、データベースをリセットするなどして無理やり解決してきた。笑

しかし、今回は粘って調べた結果、無事解決することができてよかった。
経験値が増えました。

そして、この記事が同様の問題で困っている人の助けになれば幸いです。

14
10
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
14
10