Я пытаюсь создать простую миграцию базы данных в Intellij с несколькими фиктивными таблицами, используя flyway.
Мои фиктивные таблицы помещаются в «resources / db /igration» и имеют формат «V1_0__initial_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"))
}
Формат моего env.переменная с именем база данных:
jdbc:mysql://localhost/xy
Само приложение SpringBoot:
@SpringBootApplication
открытый класс XyApplication {
открытый статический void main (String [] args) {
SpringApplication.run(XyApplication.class, args);
System.out.println("Hello World!");
Flyway flyway = Flyway.configure().dataSource(System.getenv("database"),
System.getenv("db_username"), System.getenv("db_password")).load();
flyway.clean();
flyway.baseline();
flyway.migrate();
}
}
Сообщение об ошибке:
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 из моей базы данных.Я думаю, что главная проблема с этим, и я пытаюсь инициализировать это.К сожалению, это не единственная проблема: моя реализация не сработала даже до того, как я удалил эту таблицу, поэтому могут возникнуть более концептуальные проблемы.
Не могли бы вы мне помочь?Как мне решить эту проблему?