在编写用于创建表的changeSet时,您可以指定表的模式(请参阅here)
如果我跑
liquibase generateChangeLog
输出不包含架构。
供参考,这是我使用的liquibase.properties文件:
driver: org.h2.Driver
classpath: h2-1.4.181.jar
url: jdbc:h2:~/test.db
username: sa
password: sa
changeLogFile: baseline.xml
liquibaseCatalogName: LIQUIBASE
liquibaseSchemaName: BAR
defaultSchemaName: BAR
outputDefaultSchema: true
outputDefaultCatalog: true
其中一个表的输出:
<createTable tableName="PRODUCTS">
<column name="ID" type="INT(10)"/>
<column name="CODE" type="VARCHAR(10)"/>
<column name="PRICE" type="DECIMAL(9, 2)"/>
</createTable>
如果我手动编写,我会包含架构:
<createTable schemaName="BAR" tableName="PRODUCTS">
<column name="ID" type="INT(10)"/>
<column name="CODE" type="VARCHAR(10)"/>
<column name="PRICE" type="DECIMAL(9, 2)"/>
</createTable>
这是设计的吗?事后我可以使用XSLT。
答案 0 :(得分:2)
在generateChangeLog之后使用--includeCatalog=true
标志。例如:liquibase generateChangeLog --includeCatalog=true
仅当generateChangeLog首先包含架构信息时才使用outputDefaultSchema。
答案 1 :(得分:0)
请使用outputDefaultSchema=true
。这将在变更集中输出模式名称。
使用Maven插件时,请使用<outputDefaultSchema>true</outputDefaultSchema>