【发布时间】:2014-12-09 22:22:44
【问题描述】:
我有一个用于测试目的的简单更改日志文件,该文件应用了 1 个更改集,该更改集删除并创建了一个表。我们有 20 个 DEV / QA 数据库,它们都在相同版本的 DB2、OS 等上。这个 changeSet 在其中的 19 个中有效。它在 1 个 DB 中爆炸,错误如下所示。永远不会构建 databasechangelog 和 databasechangeloglock 表。
我在网上找不到太多帮助。非常感谢您提供的任何帮助!
错误
运行 Liquibase 时出现意外错误:liquibase.snapshot.InvalidExampleException:找到多个与 XXX 匹配的目录
严重的 2014 年 12 月 9 日下午 2:02:liquibase:liquibase.snapshot.InvalidExampleException:找到多个与 XXX 匹配的目录 liquibase.exception.LockException:liquibase.exception.UnexpectedLiquibaseException:liquibase.snapshot.InvalidExampleException: gs 匹配 XXX 在 liquibase.lockservice.StandardLockService.acquireLock(StandardLockService.java:214) 在 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>
【问题讨论】:
-
你有两个同名但不同案例的目录吗?
-
目录是指模式吗?运行此选择时我没有找到任何重复的行:select * from syscat.schemata order by 1;
-
当我在数据库服务器上运行这个命令时,它不会返回重复的条目:db2 list db directory
-
找到了!从 sysibm.tables 中选择不同的 table_catalog、table_schema;会得到纠正。谢谢内森!
-
上面的选择现在只返回 1 个 table_schema 但 Liquibase 问题仍然存在。您能否让我知道 Liquibase 正在运行什么以确定存在超过 1 个目录?该数据库正在使用中,我可以毫无问题地创建表。尝试创建 databasechangelog 表时,Liquibase 正在轰炸。谢谢!
标签: liquibase