TL;DR
DB
跨ぎの外部キーが絡む状態でDatabseSetup
すると、外部キーの元になるinsert
がコミットされずにデッドロックが発生する- エラーメッセージは
Caused by: com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction
になる
- エラーメッセージは
- 外部キー制約を切ることでこの問題を回避できる
起きた問題
タイトル通り、DB
跨ぎの外部キーが絡む状態でDatabseSetup
した所、外部キーの元になるinsert
がコミットされずにデッドロックが発生する状態になりました。
対処
色々調べましたが、DbUnit
側でこれに対応する方法は提供されていないように見えました。
そのため、テストでは外部キー制約を切ることでこの問題に対処しました(外部キー制約によるテストデータ作成の手間を軽減する意図も有りました)。
外部キー制約の切り方は別の記事にまとめてあります。