4

我在 mac lion 上运行 postgres 9 ......在 rails 3.2.3 web 应用程序上。

我正在表中查询一个名为 errors_rates_last_updated_at 的条目,该条目目前还不存在。因此,当我在 rails 控制台中键入以下内容时:

a = Settings.errors_rate_last_updated_at

我得到 a = 0000-01-01 00:00:00 -0800 。很公平。

然后当我用这个日期查询模型时,

 Error.where('most_recent_notice_at > ?', a)

我收到此错误:

ActiveRecord::StatementInvalid: PG::Error: ERROR:  date/time field value out of range: "0000-01-01 08:00:00.000000"

有人可以帮我弄清楚发生了什么吗?谢谢!

4

1 回答 1

5

Rails 正在使用在 Pg 上无效的 MySQL 主义。不允许使用零时间戳。

regress=# SELECT CAST('0000-01-01 08:00:00.000000' AS date);
ERROR:  date/time field value out of range: "0000-01-01 08:00:00.000000"
LINE 1: SELECT CAST('0000-01-01 08:00:00.000000' AS date);

要了解更多关于您是如何达到这一点的,您需要启用查询日志记录(在 PostgreSQL 或 rails 中)并找出导致异常的查询。

于 2012-07-17T23:49:13.543 回答