2014-01-08 27 views
1

我正在構建一個Web應用程序,當它在生產模式@ Heroku上運行時崩潰並嘗試執行以下查詢,而在開發模式中一切正常運行。PG :: SyntaxError:ERROR:在Rails中的生產模式下

查詢如下:

report_id = ReportsNum.group("report_id"). 
        having("GROUP_CONCAT(patent_num ORDER BY patent_num ASC SEPARATOR ',') = ?",patents_list). 
        order(created_at: :desc). 
        pluck(:report_id). 
        first 

,這是我收到異常消息:

2014-01-08T18:46:48.316625+00:00 app[web.1]: PG::SyntaxError: ERROR: syntax error at or near "SEPARATOR" 
2014-01-08T18:46:48.316633+00:00 app[web.1]:                ^
2014-01-08T18:46:48.316637+00:00 app[web.1]: : SELECT "report_patent_nums"."report_id" FROM "report_patent_nums" GROUP BY report_id HAVING GROUP_CONCAT(patent_num ORDER BY patent_num ASC SEPARATOR ',') = 'AB1234567S1,AB1234567S2' ORDER BY "report_patent_nums"."created_at" DESC 
2014-01-08T18:46:48.316701+00:00 app[web.1]: LINE 1: ...G GROUP_CONCAT(patent_num ORDER BY patent_num ASC SEPARATOR ... 
2014-01-08T18:46:48.316632+00:00 app[web.1]: LINE 1: ...G GROUP_CONCAT(patent_num ORDER BY patent_num ASC SEPARATOR ... 
2014-01-08T18:46:48.316703+00:00 app[web.1]: 

可能是這樣做的原因是什麼,因爲在開發模式下運行平穩?

請問下面的警告是爲什麼?

[deprecated] I18n.enforce_available_locales will default to true in the future. If you really want to skip validation of your locale you can set I18n.enforce_available_locales = false to avoid this message.

+0

我不知道如何解決你所看到的具體Postgres錯誤,但有一點我發現有幫助的是,針對你將在生產中使用的相同數據庫進行開發。很可能你正在開發針對SQLite的Heroku使用Postgres,這可能會導致你描述的場景。它需要更多的設置,但它會幫助您在將它們推向生產之前捕獲這樣的問題。 – Dhaulagiri

+0

您的數據庫是否相同? – Crisfole

+0

對於開發,我們正在使用mysql,就像這裏在database.yml文件'development: adapter:mysql2'中所述的那樣。在生產模式中,我們也使用mysql,如後面在文件'production: adapter:mysql2'中所述,所以它們應該相同或不相同? – SteveSt

回答

3

這是一個壞主意,使用MySQL數據庫,同時在生產中使用PostgreSQL數據庫進行開發(即只的Heroku Postgres的使用,除非您使用的添加上)。

MySQL和Postgres之間的SQL實現有很大差異,這會導致很難排除故障的生產錯誤。

例如,我不認爲Postgres甚至有您試圖使用的GROUP_CONCAT方法。

見Heroku的建議在這裏:

https://devcenter.heroku.com/articles/heroku-mysql

相關問題