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

Takahiro Itagaki itagaki.takahiro @ gmail.com
2010年 7月 6日 (火) 13:40:37 JST


板垣です。

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