我正在尝试使用Spring Boot应用程序和Oracle。 到目前为止,我已成功地将flyway用于几个数据库(postgreSQL,mysql,SQLServer),但在Oracle上,我一直遇到鸡蛋和鸡蛋问题。
如果我是第一次运行我的应用,则会收到错误:Found non-empty schema "SPRING" without metadata table! Use baseline() or set baselineOnMigrate to true to initialize the metadata table.
我正在将用户spring
连接到Oracle上配置的特定命名空间。我希望在同一名称空间上有schema_version
表
因此,如果我尝试设置flyway.baseline-on-migrate=true
,它确实会创建迁移表,但是,它不会创建任何表,因为它表示已经在{{1}标识的模式上安装了版本1 }}
如何摆脱这种鸡蛋问题?似乎只与oracle,所有其他dbs一起发生,它在第一次直接工作。
到目前为止,我正在运行它,应用程序失败,然后我从<< Flyway Baseline >>
表中删除条目并再次运行。
想法?
答案 0 :(得分:0)
您可能需要在Spring Boot中指定架构,例如:
flyway:
schemas: SPRING
让我们说,您在Oracle XE中进行了以下设置:
CREATE TABLESPACE SPRING DATAFILE 'spring.dbf' SIZE 40M ONLINE;
CREATE USER SPRING IDENTIFIED BY SPRING DEFAULT TABLESPACE SPRING TEMPORARY TABLESPACE TEMP;
GRANT CREATE SESSION, CREATE TABLE, CREATE SEQUENCE, UNLIMITED TABLESPACE TO SPRING;
您现在应该能够使用以下引导属性填充数据库:
spring:
datasource:
url: jdbc:oracle:thin:@localhost:1521:xe
username: SPRING
password: SPRING
flyway:
schemas: SPRING