Springで初期データをdata.sqlで投入する方法

Springで初期データをdata.sqlで投入する方法

data.sqlというファイルをsrc/main/resources配下に置くことでSpring起動時にデータをテーブルにインサートすることができます。

但し、application.yamlの設定が必要です。

initialization-mode: alwaysが必要です。

ddl-auto: createとすることで、アプリを終了してもデータがインサートされたままとなります。

spring:
datasource:
initializationmode: always
url: jdbc:mysql://localhost:3306/ginkou?serverTimezone=UTC
username: root
password: system
driverclassname: com.mysql.cj.jdbc.Driver
jpa:
database: MYSQL
hibernate:
ddlauto: create

view raw

data.sql

hosted with ❤ by GitHub

ddl-auto: create-dropとすると、アプリ終了時にテーブルがdropされてしまいます。

ddl-auto: updateとすると、テーブルがcreateされたりdropされない為、既にデータが存在する場合は、初期データ投入のinsert文で重複キーでエラーとなってしまいます。(Duplicate entry ‘1’ for key ‘PRIMARY’)

Duplicate keyのエラーを回避したい場合はinsert文をON CONFLICT ~ DO NOTHING;を使用したりしておけば大丈夫です。

また、flywayやliquibaseなどのDBマイグレーションツールを使う手もありです。

insertした初期データが日本語が文字化けする場合

これは、data.sqlをutf-8で保存することで解決できます。

  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA