【问题标题】:jRuby and ActiveRecord 5 retrieve datetime in UTC but wrong timejRuby 和 ActiveRecord 5 以 UTC 检索日期时间但时间错误
【发布时间】:2020-08-24 11:17:43
【问题描述】:

我有一个带有 ActiveRecord、MySQL 和 jRuby 的非 Rails 应用程序。我们最近从 activerecord 4 升级到 5,我们开始遇到这个问题:

jruby-9.2.7.0 :018 > ActiveRecord::Base.default_timezone
 => :utc

jruby-9.2.7.0 :013 > date = Time.now
 => 2020-05-08 16:37:01 -0300

jruby-9.2.7.0 :016 > Term.create(version: 'some-value', created_at: date)

D, [2020-05-08T16:37:31.440094 #62090] DEBUG -- :    (79.4ms)  BEGIN TRANSACTION
D, [2020-05-08T16:37:31.561324 #62090] DEBUG -- :   Term Create (81.9ms)  INSERT INTO `terms` (`version`, `created_at`) VALUES ('some-value', '2020-05-08 19:37:01')
D, [2020-05-08T16:37:31.725987 #62090] DEBUG -- :    (162.3ms)  COMMIT TRANSACTION

=> #<Term id: 14, version: "some-value", created_at: "2020-05-08 19:37:01">

jruby-9.2.7.0 :017 > Term.last.created_at
 => 2020-05-08 16:37:01 UTC

预计 created_at 值应为 2020-05-08 19:37:01 UTC。

欢迎任何可能发生的事情的帮助:)

【问题讨论】:

  • 我用activerecord 4测试了同一个例子,结果是正确的
  • 您的时区配置是什么?也许这个答案可以帮助解决您的问题:stackoverflow.com/a/32229086/1505529
  • 我一直在 gems 中调试。当我使用 JRuby 时,我需要这个 gem 用于 MySQL “activerecord-jdbcmysql-adapter”的适配器,问题似乎出在它们的依赖项之一上。明天我将对此进行更多研究,现在我知道问题出在哪里。感谢您的帮助!

标签: mysql ruby datetime activerecord jruby


【解决方案1】:

如果其他人对 MySQL 有此问题,我在 database.yml 中使用 this 配置修复它

【讨论】:

    猜你喜欢
    • 2021-05-14
    • 2023-03-21
    • 1970-01-01
    • 2016-12-20
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多