Liquibase ORA-01031: 权限不足

Liquibase ORA-01031: insufficient privileges

我收到此错误消息是因为仅将 liquibase 作为依赖项并启用它(默认)。

<dependency>
  <groupId>org.liquibase</groupId>
  <artifactId>liquibase-core</artifactId>
  <version>4.5.0</version>
</dependency>

Caused by: liquibase.exception.DatabaseException: ORA-01031: insufficient privileges [Failed SQL: (1031) CREATE TABLE MYSCHEMA.DATABASECHANGELOGLOCK (ID INTEGER NOT NULL, LOCKED NUMBER(1) NOT NULL, LOCKGRANTED TIMESTAMP, LOCKEDBY VARCHAR2(255), CONSTRAINT PK_DATABASECHANGELOGLOCK PRIMARY KEY (ID))]

我有一个通过 Kerberos 身份验证连接到 Oracle 数据库的现有功能数据源和 HikariConfig。我对它如何尝试执行 sql 代码感到困惑...我还没有声明任何 @LiquibaseDataSource 甚至是关于此事的更新日志。

如果您正在使用 Spring 引导,只需添加 liquibase 依赖项,SB 就会使用您现有的数据源自动配置它。在空数据库上首次启动应用程序时,Liquibase bean 将尝试创建它的两个实用程序表:

DATABASECHANGELOGLOCKDATABASECHANGELOG

因此,来自您的主数据源的用户正在被 Liquibase 选中,并且可能没有足够的权限在此模式上创建表。这就是您看到此消息的原因。