Liquibase无法执行混合大小写的架构(Snowflake)。 (This_Schema)

问题描述 投票:0回答:1

我已经尝试过将liquibase工具用于我们的雪花数据库。 SCHEMA名称在全部CAPITAL(UPPERCASE)中都可以使用。但是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:创建表THIS_SCHEMA.DATABASECHANGELOGLOCK(ID INT不为空,锁定的布尔值不为空,LOCKGRANTED TIMESTAMP_NTZ,LOCKEDBY VARCHAR(255),CONSTRAINT PK_DATABASECHANGELOGLOCK PRIMARY KEY(ID))]

[注意:“ This_Schema”是我的架构的名称,如此处所示,但是执行liquibase更新后,它会自动更改为UPPERCASE值,如上面的错误。

schema liquibase uppercase snowflake
1个回答
0
投票

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

Snowflake JDBC驱动程序的实现DatabaseMetadata.getTables()硬编码引用在目录周围,模式和表名,导致查询形式为:

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

这会导致找不到DATABASECHANGELOG表,即使创建之后。由于Snowflake会存储目录和架构名称为大写,getJdbcCatalogName返回大写值。

这可以解释您的问题吗?...

© www.soinside.com 2019 - 2024. All rights reserved.