【发布时间】: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