在我们的项目中,我们将JaVers与SpringBoot和FlyWay一起用作数据库迁移工具。当我在本地构建我的项目时,一切都很好。 Flyway清理架构并应用所有迁移。当我启动我的应用程序时,Javers正在创建他的表等。我在本地使用Oracle 11XE
当我尝试在CI环境中构建项目时出现问题 - OpenShift + Oracle 12.一切正常,但JaVers在应用程序启动时不创建表。
在日志中使用空架构在本地运行时,我可以看到JaVers DDL,例如:
o.p.core.schema.SchemaManagerImpl :
creating entity with name jv_commit using ddl:
CREATE TABLE jv_commit (
commit_pk NUMBER NOT NULL,
author VARCHAR2(200),
commit_date TIMESTAMP,
commit_id NUMBER(22,2),
CONSTRAINT jv_commit_pk PRIMARY KEY(commit_pk)
)
但是当在CI中运行时,我只看到:
org.javers.core.JaversBuilder : loading GroovyAddOns ...
org.javers.core.JaversBuilder : loading GuavaAddOns ...
org.javers.core.JaversBuilder : loading JodaAddOns ...
我读到了一些关于糟糕方言的内容,但是在我的*.yml
文件中我定义了它:
spring:
jpa:
database-platform: org.hibernate.dialect.Oracle10gDialect
我的JaVers属性:
javers:
algorithm: LEVENSHTEIN_DISTANCE
另外,当我为FlyWay添加新脚本创建JaVers表时,一切正常。我的JaVers依赖:
<dependency>
<groupId>org.javers</groupId>
<artifactId>javers-core</artifactId>
<version>3.6.3</version>
</dependency>
<dependency>
<groupId>org.javers</groupId>
<artifactId>javers-spring-boot-starter-sql</artifactId>
<version>3.6.3</version>
</dependency>
我通过依赖注入创建JaVers实例:
@Service
@Transactional
public class JaVersService {
@Autowired
private Javers javers;
//some logic
}
当应用程序在CI上启动时,我会遇到以下异常:
Caused by: java.lang.RuntimeException:
java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist
任何想法可能是错误的,为什么JaVers没有创建表格?