• ベストアンサー

MySQLでロールバックできない!

JDBCでMySQLに接続し、ロールバック/コミットしたいのですが、以下の例外が発生してロールバックできません。 java.sql.SQLException: General error: Warning: Some non-transactional changed tables couldn't be rolled back 同じコードで、PostgreSQLでは問題なく動作します。 MySQLはDBMSとして自動コミットになっているとのことですが、JDBCからロールバックしたいときはどうすれば良いのでしょうか? 有名な問題なのかもしれませんが、回避策が見つけられませんでした。 ご回答、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • misoka
  • ベストアンサー率35% (56/160)
回答No.2

参考としてURL、日本MySQLユーザ会へのリンクを掲げます。 MySQL J-Docに詳細情報があります。 “6.7 MySQL Transactional and Locking Commands” あたり、もしくは “MySQL はどのように標準互換か?” の章あたりが参考になるかもしれません。 わたしは試してみていないので、何ともいえませんが。 ちなみに、 例外のメッセージは、トランザクションを使わずに変更した テーブルをロールバックすることはできません、というような 意味ですね。 何かこの辺のことは言うまでもない感じもしますが。

参考URL:
http://www.mysql.gr.jp/
noname#4486
質問者

お礼

お礼が遅くなって申し訳ございません。 お二人のご案内に従ってマニュアルを参照してみました。 それによるとどうも、できるくさいのですが、具体的な手順が不明のままです。デフォルトでできないとしているので、使わないのが正解なのかと思っています。 ご回答ありがとうございました。

その他の回答 (1)

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

こいつでしょうか? 結局、rollbackしなくてすむような、コードにしないといけない、のではないかと。

参考URL:
http://www.mysql.gr.jp/jpdoc/3.23.x/manual.ja_toc.html#Non-transactional_tables

関連するQ&A