sessionVariables=FOREIGN_KEY_CHECKS=0
をパラメータに設定すれば、外部キー制約を無効にできます。
実際に設定すると以下のような書き方になります。
application.yml
datasource:
url: jdbc:mysql:${接続情報}?sessionVariables=FOREIGN_KEY_CHECKS=0
# 複数パラメータの間に挟んだ場合
url: jdbc:mysql:${接続情報}?useUnicode=true&sessionVariables=FOREIGN_KEY_CHECKS=0&characterEncoding=UTF-8
使い所
テスト以外でこれを設定するのは絶対にやめて下さい。
DbUnit
などを用いて実際にDB
にテストデータを登録してテストを実行するような状況では、外部キー制約が有効になっていると、その分のテストデータを全て作る必要が出てしまい手間が増えます。
そのような場面では、何らかの方法で外部キー制約を無効にすると省力化が期待できます。
一方、開発中や本番環境で外部キー制約を無効にするのは危険なため、そのような場面ではこの方法を用いるべきではありません。
また、複数の登録関数を結合して動かすようなテストを作成する場合には外部キーの整合性もチェックする必要が有るため、この方法は不適です。