我有一个现有的项目,它使用liquibase来管理相同数据库结构的Oracle,MySQL和SQLServer版本,我正在添加Postgres支持。我需要在指定的模式下创建Postgres数据库(即不是默认的公共模式),并且需要databasechangelog表也在该模式中。
我意识到,对于Postgres,我可以通过指定" defaultSchemaName"来实现这一点。我的ant文件的updateDatabase目标中的参数,但由于目前没有设置,我不想在其他RDBM上引入任何副作用,这些RDBM是从同一个ant文件管理的。有谁知道这个参数的默认值是什么,以便我可以强制其他RDBM使用它,从而使我的更改向后兼容?
答案 0 :(得分:3)
defaultSchemaName因dbms实现而异。在Oracle上,默认defaultSchemaName
是用户名。在MS SQL Server上,它是dbo。 MySQL不支持模式,因此没有默认的模式名称。在Postgres上,默认架构名称为“public”。
要自己检查一下,您可以从github获取liquibase源代码,并查找扩展AbstractJdbcDatabase或实现Database接口的类。其中大部分都在liquibase.database.core