You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hibernate 5.5.3.Final版本unquotedCaseStrategy变更导致MariaDB目录访问异常的解决请求

解决Hibernate 5.5.3.Final升级后MariaDB数据库名大小写问题

我完全理解你遇到的困扰——Hibernate 5.5.3.Final把unquotedCaseStrategy默认从MIXED改成UPPER,导致你的混合大小写数据库名WebServiceDB被强制转成大写WEBSERVICEDB,而MariaDB在区分大小写的环境(比如Linux系统)里根本找不到这个库。你之前尝试的URL配置无效,是因为用错了MySQL/MariaDB的标识符引用规则,下面给你几个可行的解决方案:

方案1:正确在JDBC URL中引用数据库名

MySQL/MariaDB默认用**反引号(`)**作为标识符的引用符号,你可以直接把数据库名用反引号包裹,在Spring Boot的yml配置里这样写:

spring:
  datasource:
    url: jdbc:mysql://1.1.1.1:3306/`WebServiceDB`

如果你的数据库开启了ANSI_QUOTES模式(允许用双引号引用标识符),也可以用转义后的双引号:

spring:
  datasource:
    url: jdbc:mysql://1.1.1.1:3306/"WebServiceDB"

你之前用的"是HTML转义字符,Spring Boot不会把它解析成实际的双引号;而[WebServiceDB]是SQL Server的引用语法,MySQL/MariaDB完全不识别,所以这两种写法都无效。

方案2:恢复Hibernate的未引用标识符大小写策略

如果你不想改动URL,直接把unquotedCaseStrategy改回原来的MIXED即可,在Spring Boot中添加以下配置:

spring:
  jpa:
    hibernate:
      properties:
        hibernate.identifier.unquoted_case_strategy: org.hibernate.boot.model.naming.IdentifierCaseStrategy.MIXED

这个配置会让Hibernate对未引用的标识符保持原来的混合大小写,和升级前的行为完全一致。

方案3:强制Hibernate引用所有标识符

如果你希望所有数据库对象(表、列、数据库名)都严格保留原大小写,可以开启Hibernate的强制引用标识符配置,这样会自动使用默认的quotedCaseStrategy=MIXED:

spring:
  jpa:
    hibernate:
      naming:
        quoted-identifier: true

这个方案最彻底,能避免后续其他数据库对象出现类似的大小写问题。

你可以根据自己的项目情况选择其中一种方案,一般方案1或2就能快速解决当前的数据库名访问问题。

内容的提问来源于stack exchange,提问作者Steven

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 12:22:46