当我添加
defaultSchemaName:myDB
在我的属性文件中,我可以这样获得模式名称:
UPDATE MYDB.DATABASECHANGELOGLOCK....
INSERT INTO MYDB.DATABASECHANGELOG....
UPDATE MYDB.DATABASECHANGELOGLOCK...
但是,如果我像这样向我的sql文件中添加新的变更集
--changeset
SELECT * FROM MYTABLE;
我无法获得架构名称。我的结果是:
UPDATE MYDB.DATABASECHANGELOGLOCK....
SELECT * FROM MYTABLE;
INSERT INTO MYDB.DATABASECHANGELOG....
UPDATE MYDB.DATABASECHANGELOGLOCK...
我的问题是,有没有办法像其他方法一样向我的新查询中添加架构名称?
SELECT * FROM MYDB.MYTABLE
答案 0 :(得分:0)
属性文件由liquibase处理,用于其自身的变更集。 当您编写SQL语句时,liquibase会将它们直接执行到数据库中。
您可以通过在环境中定义默认数据库来解决此问题。
答案 1 :(得分:0)
您可以尝试修改sql文件(如果使用的是sqlfiles)并使用占位符。因此,例如,您将具有如下更改集:
--changeset
SELECT * FROM ${mySchema}MYTABLE;
我猜这的最佳实践是像这样在主变更日志中定义属性(您可以使用架构将其定义为空或预定义):
<property name="mySchema" value="" />
,然后在运行时在命令行中像参数一样传递它(-Dparameter.mySchema=MYDB.
注意:我不确定在这里是否应该在liquibase.properties中将其前缀为parameter
)或放置放入liquibase.properties
。