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

Spring Boot部署到CentOS7的Tomcat9时Hibernate Envers提示revınfo不存在

问题根因

你遇到的报错核心是操作系统Locale的语言转换规则导致的表名拼写异常:
异常信息中的revınfo第二个字符为土耳其语小写不带点ı,并非你预期的英文小写i。当CentOS 7系统配置了土耳其语(tr_TR)系列Locale时,Java的字符串大小写转换会遵循土耳其语规则:大写I会被转为小写ı而非英文小写i。Hibernate Envers默认的审计记录表名为大写REVINFO,转换为小写时触发该规则,最终生成的SQL查询不存在的revınfo表,和数据库中实际存在的revinfo表不匹配。

解决方案

你可以任选以下一种方案解决:

  • 方案1(最稳妥,不受环境影响):在现有JPA配置中显式指定Envers审计表名,跳过自动转换逻辑
    新增配置项:
    put("org.hibernate.envers.revision_table_name", "revinfo");
    
    该配置直接指定查询的表名和你数据库中已有的revinfo完全匹配,无需修改任何环境配置。
  • 方案2(修改Tomcat启动参数,强制JVM使用英文Locale):
    在Tomcat安装目录的bin/setenv.sh文件(无该文件则手动创建)中添加如下配置:
    export CATALINA_OPTS="$CATALINA_OPTS -Duser.language=en -Duser.region=US -Dfile.encoding=UTF-8"
    
    保存后重启Tomcat即可生效,强制JVM使用英文大小写转换规则,大写I会正确转为小写i。
  • 方案3(修改CentOS系统全局Locale):
    执行命令将系统默认Locale改为英文UTF-8:
    localectl set-locale LANG=en_US.UTF-8
    
    执行完成后重启系统或重启Tomcat服务即可生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 17:45:02