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