【发布时间】:2011-02-25 12:45:31
【问题描述】:
我正在尝试将一个简单的 Sinatra 应用程序移至 Heroku。使用 Taps 迁移 Ruby 应用程序代码和现有 MySQL 数据库进展顺利,但出现以下 Postgres 错误:
PostgresError - 错误:运算符不存在:文本 = 整数 LINE 1: ...d_at", "post_id" FROM "cmets" WHERE ("post_id" IN (4, 17,... ^ 提示:没有运算符与给定名称和参数类型匹配。您可能需要添加显式类型转换。
很明显,该问题与查询中的类型不匹配有关,但这是由 DataMapper ORM 以非常高的抽象级别从 Haml 模板发出的,所以我不确定该怎么做关于控制这个...
具体来说,这似乎是在我的 Haml 模板中调用 p.comments 时抛出的,其中 p 表示给定的帖子。
Datamapper模型相关如下:
class Post
property :id, Serial
...
has n, :comments
end
class Comment
property :id, Serial
...
belongs_to :post
end
这在我使用 MySQL 的本地和当前托管环境中运行良好,但 Postgres 显然更严格。
必须有数百个 Datamapper 和 Haml 应用程序在 Postgres DB 上运行,并且这种模型关系是超常规的,所以希望有人已经看到(并确定如何解决)这个问题。谢谢!
更新:请参阅Heroku: Postgres type operator error after migrating DB from MySQL 以获得解决方案。
【问题讨论】:
标签: postgresql haml heroku datamapper