Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java H2数据库中的字符集_Java_Sql_H2 - Fatal编程技术网

Java H2数据库中的字符集

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

我们在世界各地的多台服务器上使用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 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不是在运行时生成的,而是在编译时生成的。