2
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 JDBC】URLにパラメータを設定して外部キー制約を無効にする【MySQL】

Posted at

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にテストデータを登録してテストを実行するような状況では、外部キー制約が有効になっていると、その分のテストデータを全て作る必要が出てしまい手間が増えます。
そのような場面では、何らかの方法で外部キー制約を無効にすると省力化が期待できます。

一方、開発中や本番環境で外部キー制約を無効にするのは危険なため、そのような場面ではこの方法を用いるべきではありません。
また、複数の登録関数を結合して動かすようなテストを作成する場合には外部キーの整合性もチェックする必要が有るため、この方法は不適です。

2
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
2
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?