2012-07-17 2 views
4

저는 postgres 9를 Mac lion에서 실행 중입니다 ... 레일 3.2.3 웹 응용 프로그램에서.Postgres 날짜/시간 필드 값이 범위를 벗어났습니다.

나는 아직 존재하지 않는 errors_rates_last_updated_at라는 항목에 대해 테이블을 쿼리하고 있습니다. 따라서 레일 콘솔에 다음을 입력하십시오.

a = Settings.errors_rate_last_updated_at 

나는 = 0000-01-01 00:00:00 -0800이됩니다. 공정하다.

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

누군가가 나에게 무슨 일이 일어나고 있는지 알아내는 데 도움 수 : 나는

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

로,이 날짜로 모델을 쿼리 할 때

은 그 때 나는이 오류가? 감사!

+5

'0000-01-01 00:00:00 -0800'은 유효하지 않은 날짜이므로, Postgres는 그것을 비교할 수 없습니다. –

+0

https://github.com/nickstenning/validates_date_time에 대한 앱 (보석)이 있습니다. –

답변

5

레일즈는 Pg에서 유효하지 않은 MySQL-ism을 사용하고 있습니다. 0 타임 스탬프는 허용되지 않습니다. 하나의 PostgreSQL이나 레일에 - -

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); 

당신이 쿼리 로깅을 설정해야 그 시점에 있어요 방법에 대한 자세한 내용을 이해하고 예외를 원인 쿼리 알아보십시오.

관련 문제