本地我使用MySQL和远程我使用PostgreSQL(在Heroku上),我得到了不同的结果。MySQL和PostgreSQL之间的不同结果
控制器
@customer = current_customer
@shows = @customer.shows
@musicals = Musical.find(:all, :conditions =>['show_id in (?)', @shows])
@musicals.each do |musical|
@musical_activities = Activity.where('musical_id in (?)', musical.id).count(:group => "activity_type_id")
end
视图
<table>
<tr>
<th>Activity</th>
<th>Number</th>
</tr>
<% @activities.each do |activity_id, count| %>
<tr>
<td><%= activity_description(activity_id) %></td>
<td><%= count %></td>
</tr>
<% end %>
</table>
以前,我曾用=代替,但我改变了它,因为我得到一个PGError说的WHERE必须是boolean类型这样的说法,没有输入记录。无论我使用=还是IN,我都可以在本地获得正确的结果。
当我在Heroku上运行它,并用IN替换=时,错误消失,但结果是错误的。我只是得到一行,其中第一列(activity_description)为空,而不是按活动类型向我显示计数,但计数要么合计,要么只显示一个activity_type。即,即使我有很多activity_types,并且一行没有返回activity_id,也只会出现一行。
这是你为什么应该(如果可能)在你的环境中使用相同的dbms的一个很好的理由 – ksol 2012-01-14 09:48:24