You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: spring-boot-project/spring-boot-docs/src/docs/asciidoc/howto.adoc
+21-5
Original file line number
Diff line number
Diff line change
@@ -1946,23 +1946,32 @@ For example, you might choose to set it to the vendor name of the database (`hsq
1946
1946
1947
1947
[NOTE]
1948
1948
====
1949
-
Spring Boot automatically creates the schema of an embedded `DataSource`.
1949
+
When only basic SQL scripts are used, Spring Boot automatically creates the schema of an embedded `DataSource`.
1950
1950
This behavior can be customized by using the configprop:spring.datasource.initialization-mode[] property.
1951
1951
For instance, if you want to always initialize the `DataSource` regardless of its type:
1952
1952
1953
1953
[indent=0,subs="verbatim,quotes,attributes"]
1954
1954
----
1955
1955
spring.datasource.initialization-mode=always
1956
1956
----
1957
+
1958
+
In a JPA-based app, you can choose to let Hibernate create the schema or use `schema.sql`, but you cannot do both.
1959
+
Make sure to disable `spring.jpa.hibernate.ddl-auto` if you use `schema.sql`.
1960
+
1961
+
[indent=0,subs="verbatim,quotes,attributes"]
1962
+
----
1963
+
spring.jpa.hibernate.ddl-auto=none
1964
+
----
1965
+
1966
+
If you are using a <<spring-boot-features.adoc#howto-use-a-higher-level-database-migration-tool,Higher-level Database Migration Tool>>, like Flyway or Liquibase, you cannot use basic SQL scripts to create and initialize the schema.
1967
+
In this situation, if `schema.sql` and `data.sql` are present, they will be ignored.
1968
+
It is not possible to use a Database Migration Tool to manage schema creation, and a basic SQL script to initialize it.
1957
1969
====
1958
1970
1959
1971
By default, Spring Boot enables the fail-fast feature of the Spring JDBC initializer.
1960
1972
This means that, if the scripts cause exceptions, the application fails to start.
1961
1973
You can tune that behavior by setting `spring.datasource.continue-on-error`.
1962
1974
1963
-
NOTE: In a JPA-based app, you can choose to let Hibernate create the schema or use `schema.sql`, but you cannot do both.
1964
-
Make sure to disable `spring.jpa.hibernate.ddl-auto` if you use `schema.sql`.
1965
-
1966
1975
1967
1976
1968
1977
[[howto-initialize-a-database-using-r2dbc]]
@@ -2071,6 +2080,13 @@ With that setup, migrations in `dev/db/migration` run only when the `dev` profil
2071
2080
==== Execute Liquibase Database Migrations on Startup
2072
2081
To automatically run Liquibase database migrations on startup, add the `org.liquibase:liquibase-core` to your classpath.
2073
2082
2083
+
[NOTE]
2084
+
====
2085
+
When you add the `org.liquibase:liquibase-core` to your classpath, database migrations run by default for both during application startup and before your tests run.
2086
+
This behavior can be customized by using the configprop:spring.liquibase.enabled[] property, setting different values in the `main` and `test` configurations.
2087
+
It is not possible to use two different ways to initialize the database (e.g. Liquibase for application startup, JPA for test runs).
2088
+
====
2089
+
2074
2090
By default, the master change log is read from `db/changelog/db.changelog-master.yaml`, but you can change the location by setting `spring.liquibase.change-log`.
2075
2091
In addition to YAML, Liquibase also supports JSON, XML, and SQL change log formats.
2076
2092
@@ -2079,7 +2095,7 @@ If you need to use a different `DataSource`, you can create one and mark its `@B
2079
2095
If you do so and you want two data sources, remember to create another one and mark it as `@Primary`.
2080
2096
Alternatively, you can use Liquibase's native `DataSource` by setting `spring.liquibase.[url,user,password]` in external properties.
2081
2097
Setting either `spring.liquibase.url` or `spring.liquibase.user` is sufficient to cause Liquibase to use its own `DataSource`.
2082
-
If any of the three properties has not be set, the value of its equivalent `spring.datasource` property will be used.
2098
+
If any of the three properties has not been set, the value of its equivalent `spring.datasource` property will be used.
2083
2099
2084
2100
See {spring-boot-autoconfigure-module-code}/liquibase/LiquibaseProperties.java[`LiquibaseProperties`] for details about available settings such as contexts, the default schema, and others.
0 commit comments