Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.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
H2 Java插入忽略-允许异常_Java_Exception_H2 - Fatal编程技术网

H2 Java插入忽略-允许异常

H2 Java插入忽略-允许异常,java,exception,h2,Java,Exception,H2,我正在开发一个与H2数据库接口的java插件。我真正想要的是一个“Insert Ignore”语句;但是,我知道H2不支持这一点。我也知道合并,但这确实不是我想要的,如果记录存在,我不想更改它 我正在考虑的是运行insert并让重复密钥异常发生。但是,我不想让它填满我的日志文件。DB调用发生在我无法更改的导入类中。因此,我的问题是: 这样做合理吗?我不是一个让错误发生的人,但在这种情况下,这似乎是最好的方式(不应该发生那么多) 如何防止此异常影响我的日志文件?如果没有方法阻止堆栈中的异常,我可以

我正在开发一个与H2数据库接口的java插件。我真正想要的是一个“Insert Ignore”语句;但是,我知道H2不支持这一点。我也知道合并,但这确实不是我想要的,如果记录存在,我不想更改它

我正在考虑的是运行insert并让重复密钥异常发生。但是,我不想让它填满我的日志文件。DB调用发生在我无法更改的导入类中。因此,我的问题是:

  • 这样做合理吗?我不是一个让错误发生的人,但在这种情况下,这似乎是最好的方式(不应该发生那么多)
  • 如何防止此异常影响我的日志文件?如果没有方法阻止堆栈中的异常,我可以重定向输出的堆栈跟踪的输出吗

  • 谢谢。

    一种解决方案是使用:

    insert into test 
    select 1, 'Hello' from dual 
    where not exists(select * from test where id = 1)
    

    这应该适用于所有数据库(双重部分除外;您可能需要创建自己的具有一行的虚拟表)

    要禁用日志记录异常,请附加
    ;跟踪\u level\u file=0
    到数据库URL:

    jdbc:h2:~/test;trace_level_file=0
    
    或运行SQL语句:

    set trace_level_file 0
    

    很好的解决方法-在等待时,已经通过两个单独的查询执行了类似的操作。尽管如此,我还是想知道Java异常的情况,我不想费心去测试它,但我不确定它是否会起作用(不管怎样,我给了你一些要点)。我指的例外是登录到应用程序中,而不是直接从h2。我会发布我的代码/日志,但这不是我要发布的代码。谢谢。“除了双部分,您可能需要创建一行自己的虚拟表”。那听起来很烦人。