Liquibase 无法执行混合大小写的模式(Snowflake),例如。 (This_Schema)

Liquibase unable to execute schema (Snowflake) with mixed case eg. (This_Schema)

我试过为我们的雪花数据库使用 liquibase 工具。这一切都与 SCHEMA 名称全部大写(大写)的位置一起工作。但是 liquibase 没有选择我的任何大小写混合的模式,例如 (This_Schema).

我试过放这个但没用。

<defaultSchemaName>This_Schema</defaultSchemaName>

POM.XML 配置示例:

          <driver>net.snowflake.client.jdbc.SnowflakeDriver</driver>
          <url>jdbc:snowflake://${env.SNOWFLAKE_ACCOUNT}.eu-central-1.snowflakecomputing.com/?db=${env.SNOWFLAKE_DB}&amp;schema=${env.SNOWFLAKE_SCHEMA}&amp;warehouse=${env.SNOWFLAKE_WH}&amp;role=${env.SNOWFLAKE_ROLE}</url>
          <username>${env.SNOWFLAKE_USERNAME}</username>
          <password>${env.SNOWFLAKE_PASSWORD}</password>

设置错误或运行Liquibase:liquibase.exception.DatabaseException:SQL编译错误: [错误] 架构 'LIQUIBASE_DB.THIS_SCHEMA' 不存在。 [失败 SQL: CREATE TABLE THIS_SCHEMA.DATABASECHANGELOGLOCK (ID INT NOT NULL, LOCKED BOOLEAN NOT NULL, LOCKGRANTED TIMESTAMP_NTZ, LOCKEDBY VARCHAR(255), CONSTRAINT PK_DATABASECHANGELOGLOCK PRIMARY密钥(ID))]

注意:"This_Schema" 是我的架构的名称,如此处所示,但在执行 liquibase 更新时,它会自动更改为大写值,如上面的错误所示。

在 liquibase snowflake 扩展的 README 文件中找到此注释。

The Snowflake JDBC drivers implementation of DatabaseMetadata.getTables() hard codes quotes around the catalog, schema and table names, resulting in queries of the form:

show tables like 'DATABASECHANGELOG' in schema "sample_db"."sample_schema"

This results in the DATABASECHANGELOG table not being found, even after it has been created. Since Snowflake stores catalog and schema names in upper case, the getJdbcCatalogName returns an upper case value.

这能解释你的问题吗?...