当前位置: 首页 > 知识库问答 >
问题:

Liquibase无法使用混合大小写执行模式(雪花)(This_schema)

章景同
2023-03-14

我已经尝试过为我们的雪花数据库使用liquibase工具。这一切都是在模式名称全部大写的情况下进行的。但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。例外数据库异常:SQL编译错误:[错误]架构“LIQUIBASE\u DB”。此_架构“”不存在。[失败的SQL:创建表THIS\u SCHEMA.DATABASECHANGELOGLOCK(ID INT NOT NULL,LOCKED BOOLEAN NOT NULL,lockgrated TIMESTAMP\u NTZ,LOCKEDBY VARCHAR(255),CONSTRAINT PK\u DATABASECHANGELOGLOCK主键(ID))]

注意:“This_Schema”是此处显示的架构名称,但在执行liquibase更新时,它会自动更改为大写值,如上所述。

共有1个答案

谭刚毅
2023-03-14

在liquibase snowflake扩展名的自述文件中找到此注释。

雪花JDBC驱动程序实现了数据库元数据。getTables()硬代码在目录、架构和表名周围加引号,导致以下形式的查询:

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

这导致即使在创建了数据库更改日志表之后,也找不到该表。由于Snowflake以大写形式存储目录和模式名称,因此getJdbcCatalogName返回一个大写值。

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

 类似资料:
  • 问题内容: 我想编写一个包含字符串的程序,假设它显示如下: 到目前为止,我的代码: 到目前为止的输出: 问题答案: 要么

  • 我正在尝试复制混合模式。目前我已经重新创建了一个屏幕混合模式,但它似乎不能很好地工作与透明图像。 我有两种纹理 图1(前景) 图片2(背景) 我得到的结果是 计算机着色器代码 我如何将图像与不同的阿尔法正确地混合在一起?

  • 问题内容: 这是场景。 这将返回一个字符串,其中所有单词均为小写,当然为红色。我的要求是使用与原始字符串相同的大小写作为String,但应具有Font标记。 是否有可能做到这一点 ? 问题答案: 您可以使用反向引用。就像是:

  • 我想知道最好的方法来接近我正在努力实现的目标,我不知道我应该走的逻辑道路。 到目前为止,我已经有了一个EventListener和ActionListener,它们将我从JTextField键入的内容提交给JTextArea,但仅此而已。

  • 我需要一个动态的方式只提取123456从这些字符串。你能提出一个解决办法吗。

  • execute方法不仅能执行查询语句,还可以执行不返回结果集的SQL语句,甚至可以同时执行这些SQL语句的混合形式,如下面的代码所示: String insertData = "INSERT INTO jdbcdemo.t_books(name,isbn,author,price) values("+ " '人月神话', '6787102165345', '布鲁克斯', 52)"; sele