【问题标题】:Heroku Postgresql SET datestyle To europeanHeroku Postgresql SET datestyle 到欧洲
【发布时间】:2015-03-17 01:08:34
【问题描述】:

我正在解决无法将数据复制到 Rails 中的 postgresql 的问题,因为日期格式与默认的 postgresql ISO MDY 不匹配。

在我的本地机器上,我只是将日期样式更改为欧洲,以便我的 DMY 数据正确匹配。

像往常一样,在 Heroku 生产服务器上执行此操作并不容易。使用下面的步骤,我尝试更改日期样式,它有效,但它不会持续存在(如退出、返回并要求 postgres 向我显示日期样式所示)。

任何想法我可以如何坚持这一点。所有研究都表明不要这样做并更改我的代码以将数据转换为 MDY,但我正在从默认为 DMY 的旧系统中提取数百万行,并使用 postgresql 复制命令以最快的方式执行此操作。告诉 Postgresql 更改日期样式似乎比修复其他所有内容更容易:/

$ heroku pg:psql    
app-name::CRIMSON=> SET datestyle TO 'european';
SET
app-name::CRIMSON=> SHOW datestyle;
 DateStyle 
-----------
 ISO, DMY
(1 row)

app-name::CRIMSON-> \q
$ heroku pg:psql
---> Connecting to HEROKU_POSTGRESQL_CRIMSON_URL (DATABASE_URL)
psql (9.4.1, server 9.3.6)
SSL connection (protocol: TLSv1.2, cipher: jibberish, bits: 256, compression: off)
Type "help" for help.

app-name::CRIMSON=> SHOW datestyle;
 DateStyle 
-----------
 ISO, MDY
(1 row)

【问题讨论】:

    标签: ruby-on-rails postgresql heroku


    【解决方案1】:

    任何想法我可以如何坚持这一点。

    datestyle 是一个服务器设置(在 postgresql.conf 中),客户端会话可以为单个事务或单个会话覆盖(使用set datestyle ...)。有两种方法可以在单个会话之后持久化更改。

    • 更改 postgresql.conf 中的设置并重新启动服务器。 (在 Heroku 上不适合你。你肯定没有编辑 postgresql.conf 的权限,对吧?)
    • ALTER DATABASE your_database_name SET datestyle TO 'ISO, european';(应该在 Heroku 上为您工作。我会将其设置为独立迁移。)

    FWIW,默认不是ISO MDY,而是ISO, MDY。 (两个值,用逗号分隔。)第一个是“输出格式规范”;第二个是“年/月/日排序的输入/输出规范”。 (见Client Connection Defaults

    【讨论】:

    • 谢谢你,我会试一试,也感谢你澄清 ISO、DMY 设置。快速澄清一下,因为开发、测试和生产的数据库名称不同。我是否应该将迁移包装在“if RAILS_ENV=production”中,这样​​它就不会影响我的本地环境。我也可以使用配置变量说 DATABASE_URL 作为该命令中的数据库名称吗?根据对此答案stackoverflow.com/questions/14141803/… 的建议...我会试一试并报告。感谢您的建议。而且也不确定修改 .conf 的能力
    • a) 你在开发、测试和生产中对datestyle 使用相同的设置吗? b)DATABASE_URL 是导轨; ALTER DATABASE 是 SQL。我不确定 Heroku 是否会解析 DATABASE_URL 以便您可以在 SQL 中使用alter database DATABASE_URL...。如果我是你,我会启动 Heroku CLI,然后查看heroku pg:credentials 的输出。见Heroku Postgres。设置日期样式是非破坏性的;我不会害怕一点尝试。
    • 感谢您的帮助。迁移能够解决这个问题,我又回到了路上。
    猜你喜欢
    • 2020-09-01
    • 2018-01-13
    • 1970-01-01
    • 2019-06-22
    • 2021-09-16
    • 1970-01-01
    • 2022-07-26
    • 2013-06-16
    • 1970-01-01
    相关资源
    最近更新 更多