【发布时间】:2011-06-12 04:23:47
【问题描述】:
我在本地使用 SQLite 进行开发,但在我的生产主机上我正在运行 PostgreSQL。在本地一切都很好,但在生产主机上却不是这样。
我已经构建了一种搜索表单,我可以通过它使用我想要的任何组合来评估我数据库中的所有数据。只要我不使用布尔和/或日期字段,这似乎就可以正常工作。 PostgreSQL 似乎不太喜欢我的代码……
所以,这里有一些示例代码:
unless params[:analysis][:sporty].blank?
tmp_conditions_customer << ["(sporty ILIKE ?)", "%#{params[:analysis][:sporty]}%"]
end
计算结果为
SELECT COUNT(*) FROM "customers" WHERE ((sporty ILIKE '%%')
为什么会这样?为什么是“%%”?
为了测试部署,我使用 Heroku 和 Exceptional 插件。这个插件给了我以下提示:
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
谢谢 非常好,但这到底是什么意思? :-D SQL 查询的类型转换?这将如何运作?
在我的迁移中,数据库字段如下所示:
t.boolean :sporty
在我创建此数据的表单中,我正在使用此代码
<%= f.label :sporty %><br />
<%= f.select :sporty, options_for_select({ "Ja" => true, "Nein" => false }), { :include_blank => '-----'} %>
正如我已经提到的,SQLite 是我的朋友,似乎是对 PostgreSQL 的更严格的评估导致了麻烦。
提前感谢您的帮助。
【问题讨论】:
标签: postgresql ruby-on-rails-3 sqlite heroku