2012-01-14 136 views
0

本地我使用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,也只会出现一行。

+6

这是你为什么应该(如果可能)在你的环境中使用相同的dbms的一个很好的理由 – ksol 2012-01-14 09:48:24

回答

0

或者,使用ClearDB mySQL的附加组件(http://addons.heroku.com/cleardb)并保持在MySQL。

相关问题