2014-11-05 56 views
0

我正在使用rails 4.1和heroku。 我有一个postgres日期样式的问题。 当我在本地机器上运行应用程序时,一切正常,但推向heroku后失败。在heroku和开发中匹配postgres datestyle

从Heroku的日志:

(PG::DatetimeFieldOverflow: ERROR: date/time field value out of range: "30/11/2014", Perhaps you need a different "datestyle" setting.` 

我执行

heroku config:add TZ="Asia/Jerusalem" 

heroku pg:psql SET datestyle = "SQL, DMY"; 

,但还是有相同的错误消息。

有什么建议吗?

谢谢。

回答

0

问题是在语法分析器。

解决不使用:

Date.new(date[0][6..9].to_i, date[0][3..4].to_i,date[0][0..1].to_i)

但使用:

"#{date[0][6..9].to_i}-#{date[0][3..4].to_i}-#{date[0][0..1].to_i}"

一件事就是用-而不是\为分隔符,使用日期为year-month-day,而不是相反 - 这种方式在不同的环境中无法被理解。

0

当您尝试使用不适当的字符串查询数据列时,这是一个问题。

Participant.where(updated_at: "30/11/2014") 
PG::DatetimeFieldOverflow: ERROR: date/time field value out of range: "30/11/2014" 
LINE 1: ...articipants" WHERE "participants"."updated_at" = '30/11/201... 
                  ^
HINT: Perhaps you need a different "datestyle" setting. 

解析在红宝石侧的串或提供一个适当格式化的串

+0

我改变了解析,现在它在heroku上工作,但不在本地机器上。我收到了与我的本地计算机上的heroku记录相同的错误消息。 – 2014-11-06 13:45:18

+0

,这没有任何意义 – phoet 2014-11-06 22:53:24