我第一次在数据库中运行liquibase
,并在属性文件中指定了以下参数。
属性文件
username: abc
driver: com.ibm.db2.jcc.DB2Driver
defaultSchemaName: abcrpt
databaseChangeLog
文件包含一个创建测试表的简单changeSet
。 DATABASECHANGELOG
和DATABASECHANGELOGLOCK
表创建为abcrpt
,但测试表创建为abc
。我究竟做错了什么?谢谢!
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
<?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">
<changeSet id="Drop Table STPL_TEST" author="JoanB">
<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="Create Table STPL_TEST" author="JoanB">
<sql>
CREATE TABLE STPL_TEST (
ST_ID BIGINT NOT NULL,
ST_VCHAR VARCHAR(10),
ST_DATE DATE
);
</sql>
</changeSet>
</databaseChangeLog>
答案 0 :(得分:2)
这是因为您的表是使用原始SQL创建的。 Liquibase没有任何类型的SQL解析器,因此只是直接执行SQL。
如果您使用更多语义标签,例如<createTable>
,那么Liquibase将知道如何将默认架构属性添加到生成的SQL中。