[Seasar-user:17405] [S2JDBC-Gen]oidを含む列をダンプできない

Takafumi Yoshida [E-MAIL ADDRESS DELETED]
2009年 5月 11日 (月) 13:53:16 JST


いつもお世話になります。吉田@オプティクスです。

Seasar 2.4.34
PostgreSQL 8.1.4

上記の環境で、S2JDBC-GenのGen-ddlタスクで以下のようなエラーが発生します。
問題が発生するのは、フィールドにoid列を含むテーブルをダンプする際に発生しているようです。

C:\test\s2jdbc-gen-build.xml:51: Exception in thread "main"
org.seasar.extension.jdbc.gen.exception.CommandFailedRuntimeException:
[ES2JDBCGen0005]コマンド(org.seasar.extension.jdbc.gen.internal.command.GenerateDdlCommand)の実行に失敗しました。理由はorg.seasar.framework.exception.SRuntimeException:
[ES2JDBCGen0021]トランザクションに関する例外が発生しました。理由はorg.postgresql.util.PSQLException:
Large Objects may not be used in auto-commit mode.
	at org.seasar.extension.jdbc.gen.internal.command.AbstractCommand.execute(AbstractCommand.java:160)
	at org.seasar.extension.jdbc.gen.internal.command.CommandInvokerImpl.invoke(CommandInvokerImpl.java:29)
	at org.seasar.extension.jdbc.gen.command.CommandAdapter.main(CommandAdapter.java:61)
Caused by: org.seasar.framework.exception.SRuntimeException:
[ES2JDBCGen0021]トランザクションに関する例外が発生しました。理由はorg.postgresql.util.PSQLException:
Large Objects may not be used in auto-commit mode.
	at org.seasar.extension.jdbc.gen.internal.data.DumperImpl.dumpTableWithSort(DumperImpl.java:125)
	at org.seasar.extension.jdbc.gen.internal.data.DumperImpl.dump(DumperImpl.java:83)
	at org.seasar.extension.jdbc.gen.internal.command.GenerateDdlCommand$DdlVersionIncrementerCallback$1.execute(GenerateDdlCommand.java:1353)
	at org.seasar.extension.jdbc.gen.internal.sql.SqlUnitExecutorImpl.executeInternal(SqlUnitExecutorImpl.java:92)
	at org.seasar.extension.jdbc.gen.internal.sql.SqlUnitExecutorImpl.execute(SqlUnitExecutorImpl.java:71)
	at org.seasar.extension.jdbc.gen.internal.command.GenerateDdlCommand$DdlVersionIncrementerCallback.execute(GenerateDdlCommand.java:1350)
	at org.seasar.extension.jdbc.gen.internal.version.DdlVersionIncrementerImpl.increment(DdlVersionIncrementerImpl.java:122)
	at org.seasar.extension.jdbc.gen.internal.command.GenerateDdlCommand.doExecute(GenerateDdlCommand.java:1160)
	at org.seasar.extension.jdbc.gen.internal.command.AbstractCommand.execute(AbstractCommand.java:158)
	... 2 more
Caused by: org.postgresql.util.PSQLException: Large Objects may not be
used in auto-commit mode.
	at org.postgresql.largeobject.LargeObjectManager.open(LargeObjectManager.java:172)
	at org.postgresql.largeobject.LargeObjectManager.open(LargeObjectManager.java:158)
	at org.postgresql.jdbc2.AbstractJdbc2BlobClob.<init>(AbstractJdbc2BlobClob.java:39)
	at org.postgresql.jdbc2.AbstractJdbc2Blob.<init>(AbstractJdbc2Blob.java:22)
	at org.postgresql.jdbc3.AbstractJdbc3Blob.<init>(AbstractJdbc3Blob.java:22)
	at org.postgresql.jdbc3.Jdbc3Blob.<init>(Jdbc3Blob.java:20)
	at org.postgresql.jdbc3.Jdbc3ResultSet.getBlob(Jdbc3ResultSet.java:54)
	at org.seasar.extension.jdbc.gen.internal.sqltype.BlobType.getValue(BlobType.java:67)
	at org.seasar.extension.jdbc.gen.internal.data.DumpFileWriter.writeRowData(DumpFileWriter.java:209)
	at org.seasar.extension.jdbc.gen.internal.data.DumpFileWriter.writeRows(DumpFileWriter.java:169)
	at org.seasar.extension.jdbc.gen.internal.data.DumperImpl.dumpRows(DumperImpl.java:178)
	at org.seasar.extension.jdbc.gen.internal.data.DumperImpl.dumpTableWithSort(DumperImpl.java:113)
	... 10 more


どのようにすれば、Gen-ddlタスクを実行できますでしょうか?


Seasar-user メーリングリストの案内