JDBCアダプタでvacuumを実行する方法

Q.

JDBCアダプタでテンポラリDBのPostgreSQLへ接続していたところ、データベースファイルサイズが肥大化する事象に遭遇しました。

そこで、定期的にPostgreSQLのvacuumコマンドを発行したいのですが、JDBCアダプタの「更新系SQL実行」でvacuumコマンドを実行したところ、

メッセージコードJDBC0000E
[exec_update(データベース/JDBC/更新系SQL実行)]の処理に失敗しました。原因:[org.postgresql.util.PSQLException: ERROR: VACUUM cannot run inside a transaction block]

というエラーが発生しました。

vacuumコマンドがトランザクション内で実行されたことが原因のようですが、「更新系SQL実行」をトランザクション外で実行する方法はありませんか。

A. 

PostgreSQLアダプタはトランザクションに参加した状態で実行される仕様となっており、現状では[更新系SQL実行]をトランザクション外で実行することはできません。

代替案として手動実行の手順をご紹介します。

  1. 連携サーバーの詳細画面から、[データベース設定]をクリックし、データベース設定画面にログインする
  2. 画面右上の SQL と書かれたリンクをクリックし、vacuum文を入力し、[実行する]ボタンを押下する。

 


テラスカイ管理番号 CA-29443