あなたの問題はここにあります:
WHERE "reviews"."trip_id" = 32
エラーメッセージには次のように表示されます:
これで、trip_id
が作成されました。 reviews
の列 整数ではなく文字列として。 SQLiteの型システムはかなり緩いので、これはSQLiteで正常に機能しますが、PostgreSQLはかなり厳密であるため、PostgreSQLでは機能しません。
移行を追加して、trip_id
のタイプを修正してみてください。 :
def change
change_column :reviews, :trip_id, :integer
end
それでも問題が解決しない場合は、テーブルを削除して再作成します。
def change
drop_table :reviews
create_table :reviews do |t|
#...
t.integer :trip_id
#...
end
end
保存したいデータとchange_column
がある場合は、生のSQLを介してALTERTABLEを実行することもできます。 動作しません:
def change
execute %q{
alter table reviews
alter column trip_id
type int using cast(trip_id as int)
}
end
trip_id
に壊れたデータがない限り、これはPostgreSQL(SQLiteではない)で機能するはずです。 。
それを整理したら、PostgreSQLをインストールし、開発環境をそれに切り替える必要があります。 SQLite上で開発してPostgreSQLにデプロイする(または1つのデータベース上で開発し、他のデータベースの上にデプロイする)ことは悪い考えであり、あらゆる種類の悲しみと混乱を引き起こします。