Java H2数据库中的字符集
我们在世界各地的多台服务器上使用H2数据库。对于一个土耳其客户,我们遇到了一个问题,一些SQL查询突然停止工作Java H2数据库中的字符集,java,sql,h2,Java,Sql,H2,我们在世界各地的多台服务器上使用H2数据库。对于一个土耳其客户,我们遇到了一个问题,一些SQL查询突然停止工作 CASE WHEN DEF_COUNT.DEF_CNT İS NULL THEN NULL ELSE CONCAT(İFNULL(DEF_OUTSTANDING.DEF_OUT_CNT,0),' / ',DEF_COUNT.DEF_CNT) END DEFICIENCY_QUOTA, CASE WHEN OBS_COUNT.OBS_CNT İS NULL THEN NU
CASE WHEN DEF_COUNT.DEF_CNT İS NULL THEN NULL ELSE CONCAT(İFNULL(DEF_OUTSTANDING.DEF_OUT_CNT,0),' / ',DEF_COUNT.DEF_CNT) END DEFICIENCY_QUOTA,
CASE WHEN OBS_COUNT.OBS_CNT İS NULL THEN NULL ELSE CONCAT(İFNULL(OBS_OUTSTANDING.OBS_OUT_CNT,0),' / ',OBS_COUNT.OBS_CNT) END OBSERVATION_QUOTA,
CASE WHEN REC_COUNT.REC_CNT İS NULL THEN NULL ELSE CONCAT(İFNULL(REC_OUTSTANDING.REC_OUT_CNT,0),' / ',REC_COUNT.REC_CNT) END RECOMMENDATION_QUOTA,
CASE WHEN NCR_COUNT.NCR_CNT İS NULL THEN NULL ELSE CONCAT(İFNULL(NCR_OUTSTANDING.NCR_OUT_CNT,0),' / ',NCR_COUNT.NCR_CNT) END NON_CONFORMITY_QUOTA,
CASE WHEN OTHERS_COUNT.OTHERS_CNT İS NULL THEN NULL ELSE CONCAT(İFNULL(OTHERS_OUTSTANDING.OTHERS_OUT_CNT,0),' / ',OTHERS_COUNT.OTHERS_CNT) END OTHERS_QUOTA,
搜索日志文件发现,某些关键字中的Is(字母I)似乎已替换为土耳其语İ(注意I上方的句点),因此导致语法错误
我们使用Java实现,包是预编译的版本,因此用户不可能篡改代码
这段特殊的代码放在我们的持久层中,一旦用户将其系统语言切换为英语,它就会再次正常工作。如前所述,当我们在任何版本之前构建包时,类文件都是编译器
H2是否可能以某种方式更改排序规则?还请注意,H2位于我们自己提供的硬件上的客户服务器上,因此,用户不可能篡改设置
谢谢你的指点同时,我找到了原因
这个零散的代码片段不是在编译时生成的,但是我的程序员同事把它放在运行时,并对这个字符串调用toUpperCase(),导致了这个问题 与此同时,我找到了原因
这个零散的代码片段不是在编译时生成的,但是我的程序员同事把它放在运行时,并对这个字符串调用toUpperCase(),导致了这个问题 java代码的大写字母可能与locale一起使用。就像“is”.toUpperCase(新语言环境(“tr”))一样,可能您在sql中使用了带有语言环境的toUpperCase方法generation@Gurkanİlleez这不应该发生。正如我所描述的,当我们构建包时,相关的SQL不是在运行时生成的,而是在编译时生成的。就像“is”.toUpperCase(新语言环境(“tr”))一样,可能您在sql中使用了带有语言环境的toUpperCase方法generation@Gurkanİlleez这不应该发生。正如我所描述的,当我们构建包时,相关的SQL不是在运行时生成的,而是在编译时生成的。