flyway:baseline 后飞行路线迁移错误
Flyway migration error after flyway:baseline
我在我喜欢的项目中使用了Java+Spring+Maven+Flyway+Postgres。
db/migration 中有两个 sql 文件。
当我第一次 运行 申请
mvn spring-boot:run
或应用程序开始前使用
mvn flyway:migrate -Dflyway.url=jdbc:postgresql://localhost:5432/university -Dflyway.user=tester -Dflyway.password=test
Db 创建正确,没有任何错误,但是当我想首先使用
创建 V1 时
mvn flyway:baseline -Dflyway.url=jdbc:postgresql://localhost:5432/university -Dflyway.user=tester -Dflyway.password=test
之后:
mvn flyway:migrate -Dflyway.url=jdbc:postgresql://localhost:5432/university -Dflyway.user=tester -Dflyway.password=test
我发现错误:
[ERROR] Failed to execute goal org.flywaydb:flyway-maven-plugin:6.4.4:migrate (default-cli) on project universityschedule: org.flywaydb.core.internal.command.DbMigrate$FlywayMigrateException:
[ERROR] Migration V2__add_email_and_phone_to_person.sql failed
[ERROR] ------------------------------------------------------
[ERROR] SQL State : 42P01
[ERROR] Error Code : 0
[ERROR] Message : ERROR: relation "public.teacher" does not exist
为什么会这样?如何修复?
Flyway 基线将与 non-empty 数据库一起使用。在这种情况下,假设第一次迁移代表将数据库创建到其当前状态所需的 sql。因此,它假设您的 V1
迁移不打算执行,只是将其标记为 baseline
.
如果您只是迁移,跳过基线步骤,应该可以正常工作。
我在我喜欢的项目中使用了Java+Spring+Maven+Flyway+Postgres。 db/migration 中有两个 sql 文件。 当我第一次 运行 申请
mvn spring-boot:run
或应用程序开始前使用
mvn flyway:migrate -Dflyway.url=jdbc:postgresql://localhost:5432/university -Dflyway.user=tester -Dflyway.password=test
Db 创建正确,没有任何错误,但是当我想首先使用
创建 V1 时 mvn flyway:baseline -Dflyway.url=jdbc:postgresql://localhost:5432/university -Dflyway.user=tester -Dflyway.password=test
之后:
mvn flyway:migrate -Dflyway.url=jdbc:postgresql://localhost:5432/university -Dflyway.user=tester -Dflyway.password=test
我发现错误:
[ERROR] Failed to execute goal org.flywaydb:flyway-maven-plugin:6.4.4:migrate (default-cli) on project universityschedule: org.flywaydb.core.internal.command.DbMigrate$FlywayMigrateException:
[ERROR] Migration V2__add_email_and_phone_to_person.sql failed
[ERROR] ------------------------------------------------------
[ERROR] SQL State : 42P01
[ERROR] Error Code : 0
[ERROR] Message : ERROR: relation "public.teacher" does not exist
为什么会这样?如何修复?
Flyway 基线将与 non-empty 数据库一起使用。在这种情况下,假设第一次迁移代表将数据库创建到其当前状态所需的 sql。因此,它假设您的 V1
迁移不打算执行,只是将其标记为 baseline
.
如果您只是迁移,跳过基线步骤,应该可以正常工作。