重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

お世話になっております。

現在JavaのjdbcでmySQLに接続してデータを更新する処理を入れているのですが
AutoCommitをfalseにしておりrollbak処理をしているにも関わらず
commitがされている状態になっています。

ログ出力にてメソッド内でsetAutoCommitがfalse、
rollbakが実行されていて、commitが実行されいないのは確認済みですが
実際にはデータがロールバックされずcommitされたのちに
コネクションが閉じられています。

このような勝手なコミットがされてしまう原因で
他に何か思い当たる確認点はないでしょうか?


ご力添えお願いします。

A 回答 (2件)

こんにちは。



テーブルのエンジンがInnoDBとかトランザクションが利用出来る物になっていることは確認していますか?

それが出来ているのであれば
実際にロールバックされる前にコミットしてしまっているとかでしょうかね。

この回答への補足

トランザクションが利用できることは確認済みです。
実際には6つのスキーマに対してそれぞれ更新しており、
すべてのスキーマをロールバックしているのですが
一番最後の6つ目のスキーマのみコミットされている状態となっております。

補足日時:2014/01/31 11:55
    • good
    • 0

mySQLだと、一部のSQLステートメントを実行する前に、暗黙的にコミットしてしまうようですが、そのあたりは大丈夫でしょうか?



mySQL 5.1のリファレンス
http://dev.mysql.com/doc/refman/5.1/ja/innodb-im …
この中に、「次の各ステートメント(そしてそれらの同義語)は、まるでステートメントを実行する前に COMMITを行ったかのように、暗黙にトランザクションを終了します。 ・・・」とあります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!