【发布时间】:2012-06-13 23:08:14
【问题描述】:
我在 Ruby 1.8.7 上使用 Rails 3.2.2 和 mysql2 0.3.11(针对 mysql 14.14 服务器),有时 created_at 或 updated_at 值将是无效的 DateTime,并导致我的应用程序使用消息"Invalid date: 2022-03-00 00:00:00" 引发异常。
我没有明确地创建、设置、读取或对 created_at 和 updated_at 列进行任何操作。
通过mysql 客户端检查表,在大多数情况下,每列中的值都是“0000-00-00 00:00:00”,在 Rails 中以nil 结尾。但是,有几行显示了诸如“2022-03-00 00:00:00”之类的值(它们都是不同的,但据我所知,都是 2022 年的)。
有趣的是,我什至无法从 Rails 运行 .destroy(),因为它无法创建对象。
哪些可能会为这些列设置无效日期?
编辑:所有表格都会发生这种情况。这是我的 schema.rb,以及其中一张表的所有迁移:https://gist.github.com/2930655
Edit2:我自己解决了它(请参阅下面的答案),但如果你能权衡一下它是否是一个错误,如果是,那么这个错误与哪个包(ActiveRecord ?)。
【问题讨论】:
-
您对该表的迁移是什么以及它在 schema.rb 中的内容是什么?
标签: mysql ruby-on-rails ruby-on-rails-3.2 mysql2 ruby-1.8