我正在使用 Liquibase 4.0,并且正在使用 SQL 脚本执行数据库更改。所以我在主更改日志中指向 SQL 文件路径以通过 Liquibase 执行更改。现在我需要对它们进行隔离,因为我需要为表和索引提供不同的表空间。因此,我试图在 Liquibase 中找到参数化选项,但找不到。我的更改的 Masterchangelog 如下所示:-
<changeSet author="sanjib" id="01_PR_001">
<sqlFile dbms="oracle"
endDelimiter=";"
path="../scripts/PR_001/PR_001.sql"
relativeToChangelogFile="true"
splitStatements="true"
stripComments="true"/>
<rollback>
<dropTable cascadeConstraints="true" tableName="PERSON"/>
</rollback>
</changeSet>
Liquibase.properties 文件如下所示:-
driver: oracle.jdbc.OracleDriver
classpath: ojdbc6.jar
url: jdbc:oracle:thin:@localhost:1521/xe
databaseChangeLogTablespaceName:DATA
username: sanjib
现在主要的问题是SQL脚本中定义的表不是在用户的表空间下创建的。相反,它使用属性文件中的用户名作为表空间名称,因此面临由于缺少表空间而无法创建表的问题,这是一个明显的错误。因此,要创建 DATABSEACHANGELOG 和 DATABASECHANGELOGLOCK 表,我必须在属性文件中添加属性“databaseChangeLogTablespaceName”,但没有创建表和索引。
所以请帮助解决这两个问题。如何通过 Liquibase 指向安装以使用用户的默认表空间而不是使用用户名作为表空间。我们可以使用 XML 文件中定义的上述设置参数化 Table 的表空间和索引的表空间吗?