Heroku で PostgreSQL のエラーが発生(PG::UndefinedFunction: ERROR: )
Heroku を使っていると、ローカル環境では動いていたのに、Herokuだと動かない!ということが起きたりします。Heroku にステージング環境を用意していると、いいんですけれど、ローカルはSQLite で開発なんかしていると、気づかないでエラー発生ということになります(というか、しました)。 Heroku は、基本的にはPostgreSQL を利用しています(なので、ローカル環境もそうしろよ!というご指摘はごもっともです)。で、今回起こしてしまったのは、
PG::UndefinedFunction: ERROR: operator does not exist: character varying = integer
エラー見た直後は、「は?」と思いました。調べたら、integer だと思っていたら、stringで作ってしまっていたカラムがありました。そこで、PostgreSQL から、「型が違うよ」と指摘されていました。
カラムの型を変更
ということで、変更しようと下記のようなコードを書いたらエラー 調べると、PostgreSQL では変更は違う方法が必要らしい...
class ChangeFoo < ActiveRecord::Migration def self.up change_column :table_name, :column_name, :integer end def self.down change_column :table_name, :column_name, :string end end
PostgreSQL で string を integer に変換
class ChangeFoo < 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
というわけでした