シンプルな Sinatra アプリを Heroku に移行しようとしています。Taps を使用した Ruby アプリ コードと既存の MySQL データベースの移行はスムーズに進みましたが、次の Postgres エラーが発生します。
PostgresError - エラー: 演算子が存在しません: text = integer LINE 1: ...d_at", "post_id" FROM "comments" WHERE ("post_id" IN (4, 17,... ^ ヒント: 与えられた演算子に一致するものはありません名前と引数の型明示的な型キャストを追加する必要がある場合があります。
問題がクエリの型の不一致に関連していることは明らかですが、これは非常に高いレベルの抽象化で DataMapper ORM によって Haml テンプレートから発行されているため、これをどのように制御すればよいかわかりません。 ...
具体的には、これは特定の投稿を表すp.comments
Haml テンプレートからの呼び出しで発生しているようです。p
Datamapper モデルは次のように関連しています。
class Post
property :id, Serial
...
has n, :comments
end
class Comment
property :id, Serial
...
belongs_to :post
end
これは、MySQL を使用する私のローカルおよび現在ホストされている環境では問題なく動作しますが、Postgres は明らかにより厳密です。
Postgres DB では何百もの Datamapper & Haml アプリが実行されているに違いありません。このモデルの関係は非常に型にはまったものです。ありがとう!
更新:解決方法については、Heroku: MySQL から DB を移行した後の Postgres 型演算子エラーを参照してください。