내 Oracle 데이터베이스에 OWNER & USER라는 두 개의 스키마가 있습니다. 기본적으로 모든 테이블은 OWNER에서 생성되고 USER 계정을 사용하여 동의어가 생성됩니다.동의어 사용시 Liquibase 문제
<execution>
<id>apply.owner</id>
<phase>process-resources</phase>
<configuration>
<url>${database.url}</url>
<username>${database.owner.user}</username>
<password>${database.owner.password}</password>
<driver>oracle.jdbc.driver.OracleDriver</driver>
<changeLogFile>${changelog.owner.file}</changeLogFile>
<promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
</configuration>
<goals>
<goal>update</goal>
</goals>
</execution>
<execution>
<id>apply.user</id>
<phase>process-resources</phase>
<configuration>
<url>${database.url}</url>
<username>${database.user.user}</username>
<password>${database.user.password}</password
<driver>oracle.jdbc.driver.OracleDriver</driver>
<changeLogFile>${changelog.user.file</changeLogFile>
<promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
</configuration>
<goals>
<goal>update</goal>
</goals>
</execution>
DATABASECHANGELOG (LOCK) 테이블이 OWNER 계정에 생성 된 사용자 계정에 대한 동의어를 첨가하고, 나는 SQL 개발자에서 볼 수 있어요. 나는 사용자 스키마에 대한 초기 마이그레이션을 실행하는거야하지만 내가 가지고 :
[ERROR] Failed to execute goal org.liquibase:liquibase-maven-plugin:3.0.8:rollback (apply.user) on project liquitest: Error setting up or running Liquibase: liq
uibase.exception.DatabaseException: Error executing SQL CREATE TABLE DATABASECHANGELOGLOCK (ID NUMBER(10) NOT NULL, LOCKED NUMBER(1) NOT NULL, LOCKGRANTED TIMES
TAMP, LOCKEDBY VARCHAR2(255), CONSTRAINT PK_DATABASECHANGELOGLOCK PRIMARY KEY (ID)): ORA-01031: insufficient privileges -> [Help 1]
은 왜 내가 사용자 계정을 사용 DATABASECHANGELOGLOCK 테이블에서 선택할 수 있습니다 때이 테이블을 만들려고? 감사합니다.
감사합니다. Nathan! 동의어에는 몇 가지 문제가 있지만 확인해 주셔서 감사합니다. 그리고 liquibaseSchemaName/liquibaseTableName은 다른 스키마에 DATABASECHANGELOG (LOCK) 테이블을 갖는 데 도움이 될 수 있습니까? – dbf
예, 이러한 매개 변수를 사용하면 DATABASECHANGELOG 및 LOCK 테이블이 일반 스키마와 다른 스키마에있는 경우 스키마를 설정할 수 있습니다. –
LIquibase의 스냅 샷 및 diff 로직은 아직 스냅 샷이있는 데이터베이스 관련 기능을 사용하려고하지 않으므로 제대로 작동하지 않습니다. –