🐶

SpringBootでschema.sqlが実行されなかった原因

2022/05/14に公開

SpringBootを使用してCRUDアプリを作成しているときにエラーが出ました。
mysqlには接続できているし、databaseの作成も確認済み。
サーバー起動時にエラーも起こらずに起動できている。

結果として何が起こっていたのか

tableが存在しませんというエラーが出ていました。

DROP TABLE IF EXISTS test_table;

CREATE TABLE test_table
(
   id INT NOT NULL AUTO_INCREMENT,
   name VARCHAR(100) NOT NULL,
   old INT NOT NULL,
   PRIMARY KEY(id)
);

schema.sqlで初期tableを作成していたので、おそらくここのschema.sqlが動いていないとわかりました。
ここの起動の設定はapplication.ymlで書いているのでここが原因の元です。

sql:
    init:
      mode: always

このsql.init.mode=alwaysの書き忘れが原因だった。
これは、初期化を実行するかどうかを決める設定らしいです。
https://spring.pleiades.io/spring-boot/docs/current/reference/html/application-properties.html#application-properties.data-migration.spring.sql.init.mode

Discussion