[pgsql-jp: 35898] Re: CURRENT_TIMESTAMP で取得する日時が狂う

T.Suzuki t_suzuki @ kenwood-eng.co.jp
2005年 8月 23日 (火) 18:55:27 JST


鈴木@KEGと申します。

CURRENT_TIMESTAMP を使用している箇所が、
トランザクション中という事はないでしょうか?

そうそう無いとは思いますが、「アプリ(Servlet)」 を起動してから
CURRENT_TIMESTAMP を取得するまで、トランザクションが継続して
いれば、このような現象もありえると思います。

つまり、日時が狂っているのでは無く、PostgreSQLはトランザクション開始
日時を返しているでのではないでしょうか。

 -----------------------------------------
      鈴木 徹 (SUZUKI Toru)
      Kenwood Engineering Corporation.
      E-mail:t_suzuki @ kenwood-eng.co.jp
 -----------------------------------------

三島さん wrote:
> PostgreSQLでCURRENT_TIMESTAMPから取得する時刻が狂う現象が発生し、困って
> います。
...snip...
> ---------------------------------------------------------------------------
> 環境:
> OS: Microsoft Windows 2000 SP 4
> Cygwin: cygwin.dll 1.5.16-1
> PostgreSQL: PostgreSQL 7.4.5 on i686-pc-cygwin
> 
> 現象:
> ・運用中にCURRENT_TIMESTAMPで返される時刻が、何かの契機で過去の
>   日時に戻ってしまいます。
> 
> ・戻る時間の幅は大きく、1ヶ月以上前の日付になります。TimeZoneの
>   誤差ではないと考えています。
> 
> ・現象発生後にCURRENT_TIMESTAMPが指す日時は、ログから見て
>   PostgreSQLのサービスを起動した日時にほぼ一致します。このとき、
>   OSのシステム時刻は正しい時刻を指していました。
> 
> ・現象発生後にPostgreSQLのサービスを再起動することで、正しい
>   時刻に復旧させることができました。
> 
> 発生契機:
> ・現象発生前後のログを確認しておりますが、エラー・警告等は発生して
>   おりません。
> /var/log/PostgreSQL.log
> アプリ(Servlet)のログ
> Windowsのイベントログ
> 
> ・現象発生前後で、特に時刻を変更するような操作は行っておりません。
>   調べたところ、CURRENT_TIMESTAMPの時刻を変更する操作自体が、
>   PostgreSQLには用意されていないように思います。
> 
> ・上記のような状況のため、現象が発生する契機は今のところつかめて
>   おりません。気がついた時にはすでに時間が戻ってしまっています。
> 
> 再現頻度:
> ・再現頻度はまれで、6ヶ月の間に2度発生しています。
> 1回目(発生日: 2005/3/29)
> 当時のCURRENT_TIMESTAMPの時刻: 2005/2/6
> 
> 2回目(発生日: 2005/8/12 10:05:57)
> 当時のCURRENT_TIMESTAMPの時刻: 2005/06/23 17:03:10
> 
> ・まだ2度の再現ですが、上記の通り発生間隔に一貫性はないようです。
...snip...



pgsql-jp メーリングリストの案内