【问题标题】:match postgres datestyle in heroku and development在heroku和开发中匹配postgres datestyle
【发布时间】:2014-11-11 00:05:32
【问题描述】:

我正在使用带有 heroku 的 rails 4.1。 我对 postgres 的日期样式有疑问。 当我在本地机器上运行该应用程序时,一切正常,但在推送到 heroku 后它失败了。

来自 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";

但仍然有相同的错误消息。

有什么建议吗?

谢谢。

【问题讨论】:

    标签: ruby-on-rails postgresql date heroku


    【解决方案1】:

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

    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.
    

    在 ruby​​ 端解析字符串或提供格式正确的字符串

    【讨论】:

    • 我更改了解析,现在它可以在 heroku 上运行,但不能在本地机器上运行。我现在在我的本地机器上收到了与 heroku 记录的相同的错误消息。
    • 这没有任何意义
    【解决方案2】:

    问题出在解析器上。

    不使用解决:

    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 而不是相反——这样在不同的环境中就不会有不同的理解。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-10
      • 2023-04-02
      • 2015-06-08
      • 2013-01-18
      • 2021-04-24
      • 2019-06-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多