Liquibase db更新失败,说DATABASECHANGELOGLOCK已经是现有对象

时间:2015-07-20 12:06:46

标签: liquibase

我正在尝试以用户帐户登录,并使用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表。只有所有者帐户才有该表。请有人帮助我如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

使用Oracle时,如果在liquibase连接中使用用户凭据,则Liquibase将要使用的架构是该用户的架构 。您应该能够通过指定实际要管理的架构的名称(所有者架构)来解决此问题。

您没有指定,但看起来您可能正在使用命令行来运行Liquibase。如果是这种情况,您可以在命令行上指定--defaultSchemaName=ownerschema

http://www.liquibase.org/documentation/command_line.html