我正在尝试以用户帐户登录,并使用liquibase changeset为所有者帐户中的所有可用对象创建同义词。我在运行liquibase.integration.commandline.Main时遇到错误。
liquibase: Executing EXECUTE database command: CREATE TABLE SSEAPSL_USER_01.DATABASECHANGELOGLOCK (ID NUMBER(10) NOT NULL, LOCKED NUMBER(1) NOT NULL, LOCKGRANTED TIMESTAMP, LOCKEDBY VARCHAR2(255), CONSTRAINT PK_DATABASECHANGELOGLOCK PRIMARY KEY (ID))
Unexpected error running Liquibase: java.sql.SQLException: ORA-00955: name is already used by an existing object
SEVERE 20/07/15 12:39: liquibase: java.sql.SQLException: ORA-00955: name is already used by an existing object
liquibase.exception.LockException: liquibase.exception.DatabaseException: java.sql.SQLException: ORA-00955: name is already used by an existing object
at liquibase.lockservice.StandardLockService.acquireLock(StandardLockService.java:215)
但是用户帐户没有创建DATABASECHANGELOGLOCK
表。只有所有者帐户才有该表。请有人帮助我如何解决这个问题?
答案 0 :(得分:0)
使用Oracle时,如果在liquibase连接中使用用户凭据,则Liquibase将要使用的架构是该用户的架构 。您应该能够通过指定实际要管理的架构的名称(所有者架构)来解决此问题。
您没有指定,但看起来您可能正在使用命令行来运行Liquibase。如果是这种情况,您可以在命令行上指定--defaultSchemaName=ownerschema
。