0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Spring Boot、MySQLにINSERTされてるのにできてなくて詰んだ(Commitもしてる)対処法

Posted at

Commitまでログ出てるんだけどレコードがない

SpringBootからMySQLへデータをInsertしたい。
ログを見るとInsert文もCommitも発行された形跡がある(SpringBoot・MySQLどっちのログにも)
エラーはどこにも出ていない。
でも、Selectしてみるとそんなレコードないんです。

結論:前提として、バッチ処理中のInsertでした。タスクが全部終わる時にコミットされます。

うまくいかないこのInsertはバッチ処理中のお話でした。
Insert文やCommitの命令は都度出ていたのですが、バッチの全てのタスクがエラーなしで終了するその時にCommitされるみたいです。

対処法

@ Transactionalをつけているクラス(Service)に追記します

@Transactional(value = Transactional.TxType.REQUIRES_NEW, rollbackOn = Throwable.class)

Spring Boot v2.6.0です。
ググったところ、前のバージョンだと指定する値の形式がちょっと異なるようですが、v2.6.0だとこれでうまく動きました!

アノテーションへのこの追記で、バッチ処理中その都度、しっかりDB InsertがCommitされるようになりました:tada:

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?