Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.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
Oracle JDBC驱动程序ORA-01843:不是有效的月份错误_Oracle_Jdbc_Localization_Liquibase - Fatal编程技术网

Oracle JDBC驱动程序ORA-01843:不是有效的月份错误

Oracle JDBC驱动程序ORA-01843:不是有效的月份错误,oracle,jdbc,localization,liquibase,Oracle,Jdbc,Localization,Liquibase,我有一个包含许多INSERT语句的SQL脚本,我通过Liquibase Maven更新目标执行这些语句。 一些INSERT语句包含日期,如下面的语句 Insert into T (date) values ( to_date('16-JAN-12','DD-MON-RR')) 当我运行Liquibase更新目标时,我得到以下错误 SEVERE 12/10/15 15.46: liquibase: install.xml: migrations/install/data/data.xml::1

我有一个包含许多INSERT语句的SQL脚本,我通过Liquibase Maven更新目标执行这些语句。 一些INSERT语句包含日期,如下面的语句

Insert into  T (date) values ( to_date('16-JAN-12','DD-MON-RR'))
当我运行Liquibase更新目标时,我得到以下错误

SEVERE 12/10/15 15.46: liquibase: install.xml: migrations/install/data/data.xml::1::gdm: Change Set migrations/install/data/data.xml::1::gdm failed.  Error: ORA-01843: not a valid month
 [Failed SQL: Insert into  T (date) values ( to_date('16-JAN-12','DD-MON-RR'))]
    at liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:316)
    at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:55)
    at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:122)
    at liquibase.database.AbstractJdbcDatabase.execute(AbstractJdbcDatabase.java:1247)
    at liquibase.database.AbstractJdbcDatabase.executeStatements(AbstractJdbcDatabase.java:1230)
    at liquibase.changelog.ChangeSet.execute(ChangeSet.java:548)
    at liquibase.changelog.visitor.UpdateVisitor.visit(UpdateVisitor.java:51)
    at liquibase.changelog.ChangeLogIterator.run(ChangeLogIterator.java:73)
    at liquibase.Liquibase.update(Liquibase.java:210)
    at liquibase.Liquibase.update(Liquibase.java:190)
    at liquibase.Liquibase.update(Liquibase.java:325)
    at org.liquibase.maven.plugins.LiquibaseUpdate.doUpdate(LiquibaseUpdate.java:33)
    at org.liquibase.maven.plugins.AbstractLiquibaseUpdateMojo.performLiquibaseTask(AbstractLiquibaseUpdateMojo.java:30)
    at org.liquibase.maven.plugins.AbstractLiquibaseMojo.execute(AbstractLiquibaseMojo.java:394)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:862)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:286)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:197)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: java.sql.SQLDataException: ORA-01843: not a valid month

    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:399)
    at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1017)
    at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:655)
    at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:249)
    at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:566)
    at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:202)
    at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:45)
    at oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:933)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1075)
    at oracle.jdbc.driver.OracleStatement.executeInternal(OracleStatement.java:1718)
    at oracle.jdbc.driver.OracleStatement.execute(OracleStatement.java:1678)
    at oracle.jdbc.driver.OracleStatementWrapper.execute(OracleStatementWrapper.java:332)
    at liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:314)
    ... 35 more
在Internet上,我发现这是一个关于NLS_LANG变量的错误,该变量必须在客户端和服务器Oracle DB上设置,但这两个平台似乎都使用EN语言运行

你有没有遇到过这样的问题?问题是什么

多谢各位 朱利奥使用:

Insert into  T (date) values ( to_date('16-01-2012','DD-MM-RRRR'));
这样更安全。月份数对于指定的int session NLS_参数的语言是不变的。此外,年份编号使用所有4位数字

Insert into  T (date) 
values(to_date('16-JAN-2012','DD-MON-RRRR', 'NLS_DATE_LANGUAGE=American'));

如果您坚持使用月份名称,则可以显式定义区域。

我无法编辑脚本,因为您必须执行alter session set nls\u。。。在执行脚本之前。我认为这是我的情况下唯一可能的正确答案。是否有任何方法可以自动解释并找到适用于脚本的权限区域设置?这样我就可以离开alter session set nls\ux。。。自动工具的一部分,尽管要求任何SQL开发人员告诉我哪一个是区域设置。