我有一个简单的更改日志文件用于测试目的,它应用1个changeSet,它会删除一个表并创建它。我们在相同版本的DB2,OS等上有20个DEV / QA数据库。这个changeSet在19个中有效。它在1 DB中炸弹,错误如下所示。永远不会构建databasechangelog和databasechangeloglock表。
我无法在网上找到太多帮助。非常感谢您提供的任何帮助!
运行Liquibase时出现意外错误:liquibase.snapshot.InvalidExampleException:找到多个与XXX匹配的目录
SEVERE 12/9/14 2:02 PM:liquibase:liquibase.snapshot.InvalidExampleException:找到多个与XXX匹配的目录 liquibase.exception.LockException:liquibase.exception.UnexpectedLiquibaseException:liquibase.snapshot.InvalidExampleException: gs匹配XXX at liquibase.lockservice.StandardLockService.acquireLock(StandardLockService.java:214) at liquibase.lockservice.StandardLockService.waitForLock(StandardLockService.java:153) 在liquibase.Liquibase.update(Liquibase.java:182) 在liquibase.Liquibase.update(Liquibase.java:174)。 。 。
databaseChangeLog.xml
=====================
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
<preConditions>
<dbms type="DB2"/>
</preConditions>
<include file="db2\viewname_changeSet_005.xml"/>
</databaseChangeLog>
viewname_changeSet_005.xml
==========================
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
<changeSet id="STPL_TEST Drop Table" author="Joan">
<preConditions onFail="CONTINUE">
<sqlCheck expectedResult="1">SELECT COUNT(*) FROM syscat.tables where tabname = 'STPL_TEST'</sqlCheck>
</preConditions>
<sql>
DROP TABLE STPL_TEST;
</sql>
</changeSet>
<changeSet id="STPL_TEST Create Table" author="Joan">
<sql>
CREATE TABLE STPL_TEST (
ST_ID BIGINT NOT NULL,
ST_VCHAR VARCHAR(10),
ST_DATE DATE
);
</sql>
</changeSet>
</databaseChangeLog>
答案 0 :(得分:0)
这可能发生了,因为 Oracle 创建了 2 个同名用户,它们仅与注册表不同。因此,在您的示例中,如果您的用户是 XXX,则在创建此用户期间,Oracle 还可以创建名为 xxx 或“XXX”的用户,依此类推。您可以通过运行来检查它
SELECT * FROM all_users
order by username
然后您必须使用引号删除您的用户。如果是管理的,运行
alter session set “_oracle_script”=true;
drop user "xxx" cascade;
如果没有,只需使用引号删除用户