[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 メーリングリストの案内