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

食品の営業からSEに転職した文系エンジニアです。 プログラミングと趣味の株に関してブログを書いていこうと思います。

【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入門 プラットフォーム・クラウドを活用したアプリケーション開発と運用 (書籍)