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