我已经尝试过将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}&schema=${env.SNOWFLAKE_SCHEMA}&warehouse=${env.SNOWFLAKE_WH}&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值,如上面的错误。
在liquibase雪花扩展的README文件中找到此注释。
Snowflake JDBC驱动程序的实现
DatabaseMetadata.getTables()
硬编码引用在目录周围,模式和表名,导致查询形式为:show tables like 'DATABASECHANGELOG' in schema "sample_db"."sample_schema"
这会导致找不到
DATABASECHANGELOG
表,即使创建之后。由于Snowflake会存储目录和架构名称为大写,getJdbcCatalogName返回大写值。
这可以解释您的问题吗?...