Liquibase 液化未使用的默认架构
我第一次使用属性文件中指定的以下参数在数据库中运行Liquibase 液化未使用的默认架构,liquibase,Liquibase,我第一次使用属性文件中指定的以下参数在数据库中运行liquibase 属性文件 username: abc driver: com.ibm.db2.jcc.DB2Driver defaultSchemaName: abcrpt databaseChangeLog文件包含一个创建测试表的简单的changeSet。DATABASECHANGELOG和DATABASECHANGELOGLOCK表创建为abcrpt,但测试表创建为abc。我做错了什么?谢谢 databaseChangeLog.xm
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>
<?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>
viewname\u changeSet\u 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">
<preConditions>
<dbms type="DB2"/>
</preConditions>
<include file="db2\viewname_changeSet_005.xml"/>
</databaseChangeLog>
<?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>
从syscat.tables中选择COUNT(*),其中tabname='STPL\u TEST'
跌落台STPL_试验;
创建表STPL\U测试(
ST_ID BIGINT不为空,
ST_VCHAR VARCHAR(10),
圣日
);
这是因为您的表是用原始SQL创建的。Liquibase没有任何类型的SQL解析器,因此只直接执行SQL
如果您使用更多的语义标记,如
,那么Liquibase将知道如何将默认模式属性添加到生成的SQL中。SQL语句中是否有可以使用的预定义属性(包含当前模式)?例如:create table${LB.SCHEMA}.some_table…
您可以尝试${database.defaultCatalogName}或${database.defaultSchemaName}。我相信DB2不支持两个级别的对象容器,所以liquibase调用DB2模式目录,而${database.defaultCatalogName}是更好的选择。