我正在尝试使用kotlin Spring Boot、jpa和postgreSQL配置flyway。我的gradle依赖项是:
dependencies {
implementation('org.springframework.boot:spring-boot-starter-data-jpa')
implementation('org.springframework.boot:spring-boot-starter-web')
implementation('com.fasterxml.jackson.module:jackson-module-kotlin')
implementation('org.flywaydb:flyway-core')
implementation('com.google.code.gson:gson')
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
implementation("org.jetbrains.kotlin:kotlin-reflect")
runtimeOnly('org.postgresql:postgresql')
testImplementation('org.springframework.boot:spring-boot-starter-test')
}
我的application.properties文件是:
spring.datasource.driverClassName=org.postgresql.Driver
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
spring.datasource.url=jdbc:postgresql://${JDBC_DATABASE_URL}/jpaTestDatabase
spring.datasource.username=${JDBC_DATABASE_USERNAME}
spring.datasource.password=${JDBC_DATABASE_PASSWORD}
flyway.baseline-on-migrate=true
flyway.locations=classpath:src/main/kotlin/db/migration
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=validate
spring.session.store-type=none
使用jpa和hibernate创建表和条目按预期工作。但是,在空数据库上进行示例迁移会导致:
org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'flywayInitializer' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]:
Invocation of init method failed; nested exception is org.flywaydb.core.api.FlywayException:
Found non-empty schema(s) "public" without schema history table! Use baseline() or set baselineOnMigrate to true to initialize the schema history table.
我的目录结构是spring Initializer生成的默认目录结构,我的迁移位于:demo/src/main/kotlin/db/migration
我只有一个迁移,它是这里找到的示例迁移的kotlinized版本,我将其调整为如下:
class V1__Sample : BaseJavaMigration() {
override fun migrate(context: Context?) {
val statement = context?.connection?.prepareStatement(
"""
CREATE TABLE article (
id bigserial primary key,
name varchar(20) NOT NULL,
desc text NOT NULL
);
"""
)
statement.use { it?.execute() }
}
}
我错过了什么?当数据库完全为空(干净的docker映像)时,为什么Flyway总是抱怨在没有模式历史表的情况下找到非空模式“public”?
也许你可以试试mvn flyway:清洁
假设您使用的是spring boot版本2。
在Spring Boot2中,前缀是“spring.flyway”,因此请尝试添加前缀Spring
,如下所示。
<代码>Spring。飞行路线。迁移时的基线=真
或
spring.flyway.baselineOnMigrate=true
我刚刚在Maven学习Spring Boot,遇到了一个无法解决的错误。我从Flyway附加了一个依赖项,当我想安装它时(我单击Lifecycle上的install),会出现以下错误: 找到非空架构“PUBLIC”,但没有架构历史记录表。使用baseline()或将baselineOnMigrate设置为true来初始化架构历史记录表。 这可能是什么原因造成的,如何修复? 我正在使用Java8,我
我正在尝试使用kotlin Spring boot、jpa和PostgreSQL配置flyway。我的分级依赖关系是: 我只有一个迁移,它是在这里找到的示例迁移的kotlinized版本,我对其进行了修改,以查看以下内容: 我错过了什么?为什么Flyway一直抱怨在数据库完全为空(干净的docker映像)的情况下,发现没有模式历史表的非空模式“public”?
我知道以前有人问过这个问题,但我在这里绕圈子。。。。 我有一个postgres14数据库和一个运行flywaydb:7.13.0和flywaycore:8.5.10的Springboot应用程序 我正在使用 RDS。我使用 root 帐户手动创建了一个新数据库。当我运行Spring靴时,我的飞行路线迁移失败并出现错误 找到非空架构“public ”,但没有架构历史表。使用baseline()或将b
<代码>找到非空架构“public”,没有元数据表!使用init()或将initOnMigrate设置为true来初始化元数据表 我正在使用Postgres 9.2和Postgis 2.0。这意味着在默认情况下,当我创建新数据库时,将在名为spatial\u ref\u sys的模式中创建一个表 当我在这个数据库上运行flyway migrate时,我得到了上面的错误。运行init似乎创建了pub
我有一个问题,我的记录json可以为null。如何处理avro模式中的空记录?给出的文档是针对我想要为null记录获取的null属性的。
我正在尝试使用Flyway 4.2.0 Oracle 11g实现DB迁移 我有一个空模式: 当我尝试迁移时,Flyway说: 原因:<代码>组织。flywaydb。果心应用程序编程接口。FlywayException(FlywayException):找到了不带元数据表的非空架构“”!使用或将设置为初始化元数据表。 这是配置: 为什么我会收到此消息?我的基地是空的。