[hackers-jp: 234] Re: 【ご質問】Postgresオートコミットモードについて

花田 茂 hanada @ metrosystems.co.jp
2012年 7月 24日 (火) 15:43:09 JST


花田です。

この ML は pgsql-hackers に関する日本語での議論などが主用途らしい[1]の
で、一般的な使い方は pgsql-jp[2] の方がリプライが得られやすいと思います。

[1]http://ml.postgresql.jp/mailman/listinfo/hackers-jp
[2]http://ml.postgresql.jp/mailman/listinfo/pgsql-jp

(2012/07/24 10:59), Nakamoto, Hiroki wrote:
> Postgresオートコミットモードにつきまして、ご質問がございます。
> 
> <QA内容>
>  ・自動コミット有効モード⇒無効モードへの設定変更方法を
>   ご教授いただきたい。
> <背景>
>  ・現在、Oracle→Postgresへの移行作業を実施中。
>  ・Oracleはデフォルトでオートコミット無効であるが、
>   Postgresはデフォルトでオートコミット有効である為、
>   無効モードに設定変更したい。
>  ・業務ロジック内でDBのコミット処理を行っているため、
>   PSQLExceptionエラー(オートコミット有効時にコミットできません)となる。
>   (Connectionオブジェクトのcommitメソッドは、自動コミットモードが無効にされている時にのみ使用可能)

PostgreSQL では、バックエンドでのオートコミットの制御はかなり前(2003年?)
の時点で廃止されていますので、接続に用いているライブラリ(libpq/ECPG/JDBC
/etc.)がオートコミットの制御に対応していないのであれば、アプリケーション
で BEGIN/START TRANSACTION を明示的に発行するしかないと思います。

マニュアル斜め読みですが、ECPG や JDBC はオートコミット off に対応してい
るようです。お使いの PostgreSQL のバージョンや開発言語を明記すると回答が
つきやすいかと思います。

> <調査実績>
>  ・「/opt/PostgresPlus/9.1AS/share/psqlrc.sample」をもとに、
>   「/usr/local/pgsql/etc/psqlrc」ファイルを作成して、
>     「\ set AUTCOMMIT OFF」コマンドを追加したが設定ファイルが読み込まれない。
>  ・クライアント側の定義($HOME/.psqlrc)についても設定。
> 
>   ※psqlrcファイルを「/usr/local/pgsql/etc」配下に作成するようpsqlrc.sample
>     ファイルにコメント有り。DB再起動についても実施。

ここで使っている psqlrc は psql コマンドの起動時に読み込まれる run
command ファイルですので、一般的な DB アプリケーションでは使用されないの
ではないかと思います。

-- 
株式会社メトロシステムズ
  花田 茂
Mail : hanada @ metrosystems.co.jp
 Tel : 03-5951-1219
 Fax : 03-5951-2929


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