【问题标题】:Why am I getting a PG error on heroku when it works fine on my local rails environment?为什么 Heroku 在我的本地 Rails 环境中运行良好时会出现 PG 错误?
【发布时间】:2011-04-15 12:51:51
【问题描述】:

我收到以下错误:

ReportsController#return_search (ActiveRecord::StatementInvalid) "PGError: ERROR: syntax error at or near \"FROM\"\nLINE 5: ...OUNT(contact_postalcards.id) AS postalcard_count, FROM \"cont...\n 

它在本地运行良好,但是当我推送到 heroku 时出现错误:

我需要进行哪些更改才能使其在 Heroku 上的 Postgres 上也能正常工作?

@list = Contact.find :all,
  :select => "companies.name AS co_name, 
             companies.id AS comp_id, 
              COUNT(contact_emails.id) AS email_count, 
              COUNT(contact_calls.id) AS call_count, 
              COUNT(contact_letters.id) AS letter_count, 
              COUNT(contact_postalcards.id) AS postalcard_count",

  :conditions => ['contact_emails.date_sent < ? and contact_emails.date_sent > ?', 
                  report_end_date, report_start_date],

  :joins => [
    "LEFT JOIN companies ON companies.id = contacts.company_id",
    "LEFT JOIN contact_emails ON contact_emails.contact_id = contacts.id",
    "LEFT JOIN contact_letters ON contact_letters.contact_id = contacts.id",
    "LEFT JOIN contact_postalcards ON contact_postalcards.contact_id = contacts.id",
    "LEFT JOIN contact_calls ON contact_calls.contact_id = contacts.id"
  ],
  #:group => "companies.id"
   :group => "companies.name"
puts @list[0].attributes.inspect

【问题讨论】:

    标签: ruby-on-rails postgresql select heroku


    【解决方案1】:

    看起来这是特定于 PG 的,所以我完全改变了数据库结构。

    【讨论】:

      【解决方案2】:

      来自错误消息:

      AS postalcard_count, FROM

      删除这个逗号,在你的查询中,这是你的错误。

      【讨论】:

      • 因为查询必须不同。 SQL 是错误的,任何品牌的数据库都不会接受它。在两个数据库上记录 SQL 查询,看看这两种情况之间的区别。
      • 它是由rails生成的,不是我,我认为是PG特有的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-15
      • 2011-03-26
      • 1970-01-01
      相关资源
      最近更新 更多