如何将 Oracle 语言环境配置为在开发和集成之间相同
How to configure Oralce locale to be the same between development and integration
问题:
我的 java sprig-batch job runs fine in my development environment, but when I deploy it on the integration server, I get a date-formatting 问题。这让我觉得我的开发人员之间存在配置差异。环境。和集成服务器。
上下文:
我不是 java 或 spring 专家。这是一个 integration 问题。
我调用 MY.PROCEDURE
段 PL/SQL 代码,它又调用 Oracle 视图。
Oracle 视图中的以下指令在我的开发中运行良好。环境,但在集成服务器上它导致了问题:
T1.DATE between '01.07.2015' and '07.07.2020'
给个丑的
Caused by: java.sql.SQLDataException: ORA-01843: not a valid month
ORA-06512: at "MY.PROCEDURE", line 36
当我用 TO_DATE
指定日期格式时,它消失了。我知道这是一个很好的做法,显然应该是我们团队必须做的。无论如何,我想了解 Dev 和 Int 之间的这种配置差异。
帮助
知道我在部署这个东西时应该在哪里配置语言环境吗?
我希望我可以在本地设置本地(或日期格式),而无需修改 java 可交付成果。可能吗?
您的 NLS_DATE_FORMAT 似乎在您的环境中有所不同。 运行 每个环境中的以下内容:
select value
from nls_session_parameters
where parameter = 'NLS_DATE_FORMAT';
这就是为什么您应该始终指定格式而不是依赖隐式转换的原因。如有必要,您可以 运行 以下内容:
alter session set nls_data_format = 'mm.dd.yyyy';
或者应该是 'dd.mm.yyyy'。根据给定的信息无法确定。
开发和集成服务器之间的环境差异首先是 Swiss(FR) 设置 OS。并且...服务器是 Linux,默认为英文。
所以你开始知道我要去哪里了。
告诉Java你运行你对'fr'
地区的看法:
我必须使用以下命令完成 java 命令行:
-Duser.country=fr -Duser.language=fr
这是我找到灵感的地方:NLS_LANG setting for JDBC thin driver?(最赞的答案)。
问题:
我的 java sprig-batch job runs fine in my development environment, but when I deploy it on the integration server, I get a date-formatting 问题。这让我觉得我的开发人员之间存在配置差异。环境。和集成服务器。
上下文:
我不是 java 或 spring 专家。这是一个 integration 问题。
我调用 MY.PROCEDURE
段 PL/SQL 代码,它又调用 Oracle 视图。
Oracle 视图中的以下指令在我的开发中运行良好。环境,但在集成服务器上它导致了问题:
T1.DATE between '01.07.2015' and '07.07.2020'
给个丑的
Caused by: java.sql.SQLDataException: ORA-01843: not a valid month ORA-06512: at "MY.PROCEDURE", line 36
当我用 TO_DATE
指定日期格式时,它消失了。我知道这是一个很好的做法,显然应该是我们团队必须做的。无论如何,我想了解 Dev 和 Int 之间的这种配置差异。
帮助
知道我在部署这个东西时应该在哪里配置语言环境吗?
我希望我可以在本地设置本地(或日期格式),而无需修改 java 可交付成果。可能吗?
您的 NLS_DATE_FORMAT 似乎在您的环境中有所不同。 运行 每个环境中的以下内容:
select value
from nls_session_parameters
where parameter = 'NLS_DATE_FORMAT';
这就是为什么您应该始终指定格式而不是依赖隐式转换的原因。如有必要,您可以 运行 以下内容:
alter session set nls_data_format = 'mm.dd.yyyy';
或者应该是 'dd.mm.yyyy'。根据给定的信息无法确定。
开发和集成服务器之间的环境差异首先是 Swiss(FR) 设置 OS。并且...服务器是 Linux,默认为英文。
所以你开始知道我要去哪里了。
告诉Java你运行你对'fr'
地区的看法:
我必须使用以下命令完成 java 命令行:
-Duser.country=fr -Duser.language=fr
这是我找到灵感的地方:NLS_LANG setting for JDBC thin driver?(最赞的答案)。