プログラミングと旅と映画の日々

普段はスマホ決済サービスの会社でバッグエンドを担当しているエンジニアです。プログラミングと趣味の映画、株、時々うどんに関してブログを書いていこうと思います。海外ドラマ、クロスバイクも好きです。

【Ruby on Rails5】 heroku で PostgreSQL のエラーが発生(UndefinedFunction: ERROR: operator does not exist)

現在、localの開発環境のDBにはsqlite

本番環境のDBはpostgreSQLを採用しています。



localだと問題なく動いていたものを本番にdeployして動作確認を行ってみたところ

以下の500エラーが発生

UndefinedFunction: ERROR: operator does not exist: bigint = character varying

idをintegerで定義していましたが、postgreSQL側でStringで認識されていたことが原因のよう。

型を変更するmigrationファイルを作成して本番で定義変更を行ったところ解決

以下がmigrationファイル

class ChangeDatatypeFollowedIdOfRelationships < ActiveRecord::Migration
  def self.up
          change_column :table_name, :column_name, :'integer USING CAST(column_name AS integer)'
  end

  def self.down
          change_column :table_name, :column_name, :string
  end
end

プロフェッショナルのための 実践Heroku入門 プラットフォーム・クラウドを活用したアプリケーション開発と運用 (書籍)