MySQL和PostgreSQL的不同结果

MySQL和PostgreSQL的不同结果,mysql,ruby-on-rails-3,postgresql,heroku,Mysql,Ruby On Rails 3,Postgresql,Heroku,在本地我使用MySQL,在远程我使用PostgreSQL(在Heroku上),我得到了不同的结果 控制器 @customer = current_customer @shows = @customer.shows @musicals = Musical.find(:all, :conditions =>['show_id in (?)', @shows]) @musicals.each do |musical| @musical_activities = Activity.

在本地我使用MySQL,在远程我使用PostgreSQL(在Heroku上),我得到了不同的结果

控制器

 @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
看法


活动
数
以前,我使用了=而不是in,但我更改了它,因为我得到了一个错误,即WHERE的参数必须是boolean类型,而不是record类型。无论使用=还是IN,我都可以在本地获得正确的结果


当我在Heroku上运行它,并用IN替换=时,错误消失了,但结果是错误的。我只得到第一列(activity_description)为空的一行,而不是按活动类型显示计数,而是聚合计数或仅显示一个activity_类型。也就是说,尽管我有许多活动类型,但只显示一行,而这一行没有返回活动id。

将数据库迁移到Heroku时,Heroku内部使用
点击
gem将本地数据库导入Heroku。
但是,它有一些限制(外键和Postgres-Bigint)

如果这对你没有帮助,这里有一些很好的链接来帮助你进行转换


  • 或者,使用ClearDB mySQL插件(http://addons.heroku.com/cleardb)并保留在mySQL上。

    这是一个很好的理由,说明您应该(在可能的情况下)在您的环境中使用相同的dbms
    <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>