2011-11-16 37 views
2

这给了我一个奇怪的错误。ActiveRecord:查询varchar时日期无效

> Customer.where(:my_text_field => "05007062").first 
> Customer Load (0.9ms) SELECT `customers`.* FROM `customers` WHERE `customers`.`my_text_field` = '05007062' LIMIT 1 
ActiveRecord::StatementInvalid: Mysql2::Error: Invalid date: 2012-00-00 00:00:00: SELECT `customers`.* FROM `customers` WHERE `customers`.`my_text_field` = '05007062' LIMIT 1 
... 

有谁知道为什么会这样?我在查询中没有看到任何日期。此外,这只发生在生产中,而不是在开发机器上(都运行linux)。

我用Rails 3.1.0和mysql2 0.3.10

回答

0

听起来像是你可能在你的督促服务器上的一个记录了一些损坏的数据。你有没有其他的代码可以在db中创建记录 - 包括日期?

+0

我确实有更新客户记录的代码,但它更新了不同于此的属性(其中一个属于日期)。我检查了my_text_field数据,它似乎是一致的。 – Sergey

+1

但在这个特定的记录是由于某种原因的确是一个无效的日期(在不同的属性上)。所以修复它解决了这个问题,谢谢。 – Sergey