当前位置: 首页 > 面试题库 >

H2 Java插入忽略-允许例外

沙宣
2023-03-14
问题内容

我正在研究与H2数据库接口的Java插件。我真正想要的是“插入忽略”语句;但是,我知道H2不支持此功能。我也知道Merge,但这并不是我想要的,如果记录存在,我不想更改它。

我正在考虑的是只是运行插入并让重复键异常发生。但是,我不希望这填满我的日志文件。DB调用发生在我无法更改的导入类中。所以我的问题是:

  1. 这是合理的做法吗?我不是让错误发生的人,但这似乎是这种情况下的最佳方法(它应该不会发生太多)。
  2. 如何防止此异常击中日志文件?如果没有办法阻止堆栈中的异常,我可以重定向输出的堆栈跟踪的输出吗?

谢谢。


问题答案:

一种解决方案是使用:

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

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

要禁用日志记录例外,请附加;trace_level_file=0到数据库URL:

jdbc:h2:~/test;trace_level_file=0

或运行SQL语句:

set trace_level_file 0


 类似资料:
  • 我正在使用管理版本,ala PEP 440。 我已将几个版本上载到私有存储库: 我的问题是现在当我使用 我得到的版本是当我期望得到。 有没有办法让pip忽略“本地版本”,只安装准确的版本,而不必上传到不同的索引(即staging和stable)? 编辑: 我已尝试使用和标志,但问题仍然存在;皮普更喜欢0.0。2版本到0.0版本。2版本。 附加编辑: 我使用的是和python2.7

  • 我有两个表,它们的关系如下图所示 我创建了Hibernate数据模型,如下所示 我打算创建如下实体 当我运行这个时,我得到以下错误 org.hibernate.MappingException:实体映射中的重复列:*。SSI 列:CLIENT_ID(应使用 insert=“false” update=“false”进行映射) 如果我设置为CLIENT_ID,它将再次错误关于插入的混合 如果我为所有

  • 这里有一个简单的endpoint,存在于/api/v1/jwt中 返回一个有效的JWT令牌。 但我的安全配置不再起作用,现在所有endpoint似乎都受到保护, Edit:antPathRequestMatcher没有为configure启动,但我甚至添加了websecurity configure的路径,我得到了以下日志记录

  • 嗨! 我需要扫描mysql(5.1)上的一个非常大的表, 该表大致如下: 我需要将main_id+键的所有唯一值获取到一个新表中。 使用以下查询需要花费大量时间(在非常快的服务器上3天后仍在运行): 所以我的问题是- 这会更快吗?

  • 问题内容: 鉴于以下课程 当我们验证它(例如,使用@Valid)并且如果Website.url不遵守我的自定义@ValidUrl约束时,我们将遇到约束冲突(例如,“ URL不可访问”)。 我想知道如果用户愿意,是否可以忽略该验证。 脚步: 第一次验证表格 引发约束冲突并将其显示给用户 用户选择“我知道,仍然添加”,然后重新提交 第二次验证表单,验证@ValidUrl以外的所有内容 问题答案: 您可

  • 这两种方法有什么区别? 在Spring安全配置类中,当我使用HttpSecurity时,它仍然给我403个禁止,但当我使用WebSecurity时,它通过得很好?为什么?我觉得我几乎无法控制什么是允许的,什么需要通过过滤器进行授权。