Flyway Schema migrations for all environments:
src/main/resources/db/migration/schema
Data migrations for dev environment only
src/main/resources/db/migration/data/dev
Data migrations for prod environment only
src/main/resources/db/migration/data/prod
In DEV mode (executes schema + dev migrations):
./gradlew bootRun -Pargs=--spring.profiles.active=devIn PROD mode (executes schema + prod migrations):
./gradlew bootRun -Pargs=--spring.profiles.active=prodWrite schema migrations for all environments in the schema directory, and perform all data and state transitions in each individual data directory.
Perform multiple migrations if schema requires putting a restriction on a field(s).
e.g.
Creating a new non-null field requires that existing databases might not have data to fill in. Create two migrations for schema and one data migration. e.g.
schema:
V1__addColumnToTable.sql V2__addFkToColumn.sqldata/dev:
V1_1__wireUpExistingDevData.sqldata/prod:
V1_1__wireUpExistingProdData.sqlOrder of execution will be: V1 -> V1_1 -> V2 for both
devandprodenvironments
This is a very granular but effective approach to schema/data migrations using flyway