4

Mac lionでpostgres 9を実行しています... Rails 3.2.3 Webアプリで。

まだ存在しないerrors_rates_last_updated_atというエントリのテーブルをクエリしています。したがって、Rails コンソールで次のように入力すると、次のようになります。

a = Settings.errors_rate_last_updated_at

= 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-ism を使用しています。ゼロのタイムスタンプは許可されていません。

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 に答える