【发布时间】:2020-06-15 21:22:11
【问题描述】:
我有一个模式(适用于应用程序用户),其中只有一个脚本(创建同义词)运行。我没有该架构的 INSERT/UPDATE/CREATE 权限。我可以禁止在该架构中创建审计表(即 DATABASECHANGELOGLOCK 和 DATABASECHANGELOG 表)吗?如果是,我该怎么做?
另外,有人可以告诉我,当第一次部署完成时,代码如何以及在哪里识别出这些审计表是第一次在架构中创建的?请帮忙。
【问题讨论】:
我有一个模式(适用于应用程序用户),其中只有一个脚本(创建同义词)运行。我没有该架构的 INSERT/UPDATE/CREATE 权限。我可以禁止在该架构中创建审计表(即 DATABASECHANGELOGLOCK 和 DATABASECHANGELOG 表)吗?如果是,我该怎么做?
另外,有人可以告诉我,当第一次部署完成时,代码如何以及在哪里识别出这些审计表是第一次在架构中创建的?请帮忙。
【问题讨论】:
如果您在该架构上没有 INSERT/UPDATE/CREATE,那么您应该设置项目(即在您的 liquibase.properties 文件或您的 POM 中,或者您在应用程序中设置这种东西)所以Liqiubase 跟踪表保存在您有权访问的模式中。您不想不创建它们,因为这会消除使用 Liquibase 的几乎所有好处。要设置的属性称为liquibaseSchemaName
@htshame 关于代码位置的另一个答案是正确的。
【讨论】:
Liquibase 应该连接到数据库并且应该有足够的权限来运行。 databasechangelog 和 databasechangeloglock 表对于模式更改跟踪至关重要。所以,不,您不能禁止创建这些表。
回答你问题的第二部分(我可能错了):
databasechangeloglock 表
databasechangelog 表
我想不是这样,但仅供参考 Liquibase 具有“离线模式”,适用于您无法直接访问数据库的情况。这是Offline Database Support 的文档。
它不会在您的数据库中创建表,而是在您的工作目录中创建(默认情况下)databasechangelog.csv 文件。
【讨论】: