[pgsql-jp: 40313] Re: PostgreSQLの接続エラーの原因を究明したい

木元 愛 kimoto.ai @ jp.fujitsu.com
2010年 7月 6日 (火) 14:24:39 JST


板垣様、回答ありがとうございます。

>?「psql を使うバッチで ODBC 接続できない」というのはおかしな表現です。
>psqlはODBCを使いません。

上記は私の書き方に誤りがあり、申し訳ありませんでした。
psql を使うバッチを起動する前に、PostgreSQLへの接続確認を
ADOを使いデータソースをオープンしている、という意味でした。

当方PostgreSQLを扱うのが初めてであり、
ご迷惑をおかけし、申し訳ありません。

>8.1ではWAIT_TIMEOUT になるケースのエラー処理が適切で無いように
>見えます。少なくとも 9.0 では処理が変更されている箇所なので、もしかすると、
>これが「8.1の修正不能なバグ」である可能性もあります。

上記についてすが、「WAIT_TIMEOUT になるケースのエラー処理が適切で無いように見える」
というのは具体的にどのプログラムに該当するのか教えて頂けないでしょうか。
検索したのですが、よく分からず・・・

大変申し訳ありませんが、よろしくお願いいたします。


-----Original Message-----
From: pgsql-jp-bounces @ ml.postgresql.jp [mailto:pgsql-jp-bounces @ ml.postgresql.jp] On Behalf Of Takahiro Itagaki
Sent: Tuesday, July 06, 2010 1:41 PM
To: PostgreSQL Japanese Mailing List
Subject: [pgsql-jp: 40312] Re: PostgreSQLの接続エラーの原因を究明したい

板垣です。

2010年7月6日11:46 木元 愛 <kimoto.ai @ jp.fujitsu.com>:
> WindowsServer2003 R2 SE
>  PostgreSQL 8.1.9

Windows版の 8.1 はサポートが終了しています。
サポートが必要であれば、8.2 以降へのアップグレードをおすすめします。
# 正確には、修正不能なバグが残っており、サポートできない状況です。
# stats collector がハングするなど、致命的なバグがあることが判明しています。

> バッチ処理(PostgreSQLのテーブル対してPSQL.exeを使用しSQLを実行する処理)を
> 起動しようとしたところPostgreSQLにODBC接続が出来ず、

?「psql を使うバッチで ODBC 接続できない」というのはおかしな表現です。
psqlはODBCを使いません。

> 2010-06-28 10:43:36 FATAL:  semctl(9335392, 13, SETVAL, 0) failed: ブロック
> 不可のソケット操作をすぐに完了できませんでした。

Windowsのsemctl(SETVAL)は WaitForMultipleObjectsEx() でエミュレートされて
いますが、8.1ではWAIT_TIMEOUT になるケースのエラー処理が適切で無いように
見えます。少なくとも 9.0 では処理が変更されている箇所なので、もしかすると、
これが「8.1の修正不能なバグ」である可能性もあります。
対処としては、PostgreSQL サーバを再起動するくらいしかないかもしれません。


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