Java 飞道设置问题

Java 飞道设置问题,java,spring,intellij-idea,database-migration,flyway,Java,Spring,Intellij Idea,Database Migration,Flyway,我试图使用flyway在Intellij中创建一个简单的数据库迁移,其中包含一些虚拟表 我的虚拟表放在“resources/db/migration”中,格式为“V1\u 0\u initial\u display.sql” 它们可能包含以下内容: CREATE TABLE Fake ( ID int, name varchar(255) ); CREATE TABLE Persons( ID int, name varchar (30) ); INSERT INTO Pe

我试图使用flyway在Intellij中创建一个简单的数据库迁移,其中包含一些虚拟表

我的虚拟表放在“resources/db/migration”中,格式为“V1\u 0\u initial\u display.sql”

它们可能包含以下内容:

 CREATE TABLE Fake (
 ID int,
 name varchar(255)
 );

 CREATE TABLE Persons(
 ID int,
 name varchar (30)
 );

 INSERT INTO Persons(ID, name)
 VALUES(1,'AXC');

 INSERT INTO Persons(ID, name)
 VALUES(2,'BB');
My application.properties:

 spring.jpa.hibernate.ddl-auto=validate
 spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
 spring.jpa.show-sql=true
 spring.logging.level.org.hibernate.SQL=debug
 spring.flyway.enabled=true
 spring.flyway.user=${db_username}
 spring.flyway.password=${db_password}
 spring.flyway.url=${database}
 spring.flyway.locations=classpath:/db/migration/V1_0__initial_display.sql
我的gradle.build的相关部分:

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.flywaydb:flyway-core'
runtimeOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly System.getenv("database")
runtimeOnly 'mysql:mysql-connector-java'
compileOnly 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
compile "org.flywaydb:flyway-core:5.2.4" +
        ""
flywayMigration "com.xy.z"
}

flyway {
schemas = ['fake', 'persons']
placeholders = [
        'keyABC'          : 'valueXYZ',
        'otherplaceholder': 'value123'
]



url = (System.getenv("database"))
user = (System.getenv("db_username"))
password = (System.getenv("db_password"))
}
我的环境的格式。变量名为数据库:

jdbc:mysql://localhost/xy
SpringBoot应用程序本身:

@SpringBootApplication
公共类应用程序{

公共静态void main(字符串[]args){

错误消息:

Caused by: org.flywaydb.core.api.FlywayException: Found non-empty schema(s) 
`xy` without schema history table! Use baseline() or set 
baselineOnMigrate to true to initialize the schema history table.
我最近从数据库中删除了flyway_schema_history。我认为主要问题在于此,我正在尝试对其进行初始化。不幸的是,这不是唯一的问题:在删除此表之前,我的实现还没有工作,因此可能存在更多的概念问题


您能帮助我吗?我应该如何解决此问题?

错误消息包含有关如何解决此问题的所有必要信息


spring.flyway.baselineOnMigrate=true
添加到您的应用程序.properties中。

flyway希望首先在架构上运行。正确的处理方法是在本地删除
xy
架构中的所有内容,并使用迁移文件(.sql)构建所有内容。如果数据库中有任何不想删除的内容,则可以在调用中使用基线标志表示您知道表中的数据


通常,FlyWay和其他类似的迁移工具用于允许开发人员在不同的DBs(如开发人员和生产人员,或不同的开发人员机器)中创建相同的模式。如果您在
xy
中已经有一个不是来自FlyWay的表,您可以在代码中使用它,它会工作,但是生产和其他开发人员不会有这个表。

Spring Boot对FlyWay有现成的支持。您正在配置自己的表,它将与Spring Boot表竞争。总之,删除所有内容g在
SpringApplication.run(XyApplication.class,args);
之后,因为Spring boot已经运行了它。您的依赖项在flyway上还包含2个依赖项,您可能希望将其减少到1。除此之外,错误还包含您需要解决的所有信息。
Caused by: org.flywaydb.core.api.FlywayException: Found non-empty schema(s) 
`xy` without schema history table! Use baseline() or set 
baselineOnMigrate to true to initialize the schema history table.