问题标签 [h2db]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
380 浏览

spring - 单个项目的 Liquibase DB 特定脚本

我有spring boot项目,postgresql作为主数据库,H2作为内存数据库进行测试。我添加了一个 PL/pgSQL 过程来执行一些自定义逻辑,现在我的测试停止工作。liquibase 用户通常如何解决此类情况?

我的程序是:

0 投票
1 回答
162 浏览

h2 - 在 h2 数据库 (v1.4.195) 中的空表上重复选择 * 有多糟糕?

所以我有一个 h2 数据库事件表,我正在监视事件。有一个线程每 2 秒触发一次,并使用 select * from eventTable limit 10 offset 0 检查。

我想知道这种锤击在 h2 数据库表中的性能影响是什么。它是基于 B 树的,但 db 本身是一个文件。h2db 是否进入文件并且必须读取块,从而确定表是否为空。想想 Oracle Db 和 High Water Mark 问题,用于查询具有大行的表,这些行稍后会在没有截断的情况下被删除,这会导致不必要的块读取以完成 select * 并且对性能不利。

如果这很糟糕,是否建议使用此 qt here中描述的用于插入操作的触发器方法来交换线程部分。

问候

0 投票
1 回答
174 浏览

h2 - 保险库中的行数超过 200 时出现缓冲区溢出问题

我们开发了一个应用程序,它在表中的保险库中创建义务。如果表的行大小小于 200,则应用程序可以正常工作。但是,如果行数超过 200,则在执行期间会出现以下错误 -

请指定 PageSpecification,因为结果 [201] 比默认页面大小 [200] 多

将分页从默认的 200 增加到 400 后,我收到 java heap out of memory 错误。我厌倦了将节点的堆大小从 512m(默认)增加到 1024m。但是,这个问题仍然没有解决,我在 H2 DB-Exception: java.lang.OutOfMemoryError throw from the UncaughtExceptionHandler throw from the UncaughtExceptionHandler in thread "MVStore background writer nio:C:/Users/Administrator/Desktop/Settlemen t/corda -settlement/build/nodes/Bob/persistence.mv​​.db"

我也厌倦了在 H2 DB 文档中寻找解决方案。但是,找不到任何解决方案。

0 投票
0 回答
286 浏览

java - 处理jdbc锁异常

对于不同的数据库技术,MS-SQL 和 H2 最近,甚至对于不同的应用程序,我从无法获取表锁的语句中得到异常。

当从许多并行线程访问同一个表时,尤其会发生这种情况。假设使用足够复杂的语句和足够多的并行线程原则上无法避免这些冲突,那么处理这些失败语句的好方法是什么?

  • MS-SQL 异常明确建议重试该语句。
  • H2 允许设置 LOCK_TIMEOUT。

由于每个语句都可能以这种方式失败,因此软件中的每个语句都需要重试。似乎需要添加很多样板代码。

相比之下,timeout 是一个简单的配置,但需要设置的太高,才能保证不会再有几个线程再次触发异常。这让我回到了重试逻辑。

遗留代码包含十个语句,每个语句都以自己的方法实现,打开/关闭连接/语句/结果集的三元组。除了将它们中的每一个包装到重试循环中之外,还有什么好方法可以重构它?较低的性能是可以接受的,但没有失败的语句。

0 投票
1 回答
1115 浏览

hibernate - 休眠层次结构:鉴别器列不允许NULL

我有一个基于休眠策略的实体层次结构,SINGLE_TABLEddl-auto=update在我的 application.yml 中设置。

当我使用 h2db 运行测试时,我得到“ NULL not allowed for column ”。

这是我的映射:

我需要将null作为 discriminatorValue 设置为一个子类。

ddl-auto=update指令创建形状表时,它设置为not null鉴别器列,所以我得到“ NULL not allowed for column ”。

有没有办法使用 ddl-auto 强制鉴别器列可以为空?

0 投票
1 回答
932 浏览

java - 获取事务中自动增量字段的值

我将 H2DB 用于 litthe cuesheet-database。我正在向具有主键 ID 的 anj 自动增量字段的表中插入几条记录。对于每条记录,我想知道插入后 ID 字段的值,即在提交之前。我如何获得这个值?

0 投票
0 回答
69 浏览

sql - 基于复合主键的 SQL Auto Increment 列

当复合 PK 发生变化时,是否可以增加单独的列(不是 PK)?

例子:

这里复合 PK 是 (colA,colB)。请让我知道这是否可能

0 投票
0 回答
582 浏览

spring - liquibase 和 spring boot 集成测试 h2db Table "" not found

集成测试配置

Liquibase 配置

H2 配置

正如您在日志中看到的那样,Liquibase 运行并创建了表,但是当 Test 执行时找不到表。

引起:org.h2.jdbc.JdbcSQLException:找不到表“EXAM”;SQL语句:选择exam0_.id_exam作为id_exam1_11_,exam0_.code作为code2_11_,exam0_.created_at作为created_3_11_,exam0_.name作为name4_11_,exam0_.synonym作为同义词5_11_,exam0_.type作为type6_11_,exam0_.updated_at作为updated_7_11_ from Examexam0_其中exam0_ .id_exam 不在(从考试限制考试中选择考试 2_.id_exam

0 投票
1 回答
1085 浏览

mysql - H2 / Derby / HSQL中的MySQL函数'HEX'

我正在尝试使用内存数据库对 sql 查询进行单元测试。查询使用 MySQL 内置函数“hex”和“unhex”(因为它们将二进制数据写入数据库)。结果这三个内存数据库解决方案都不支持“十六进制”功能,我无法测试它们。

我的问题 - 有没有办法在不将十六进制转换移动到代码而不是直接在查询中的“十六进制”函数的情况下测试查询?

附言。我知道内存中的数据库并不代表真正的数据库行为,但查询非常简单——插入和选择。

0 投票
0 回答
2216 浏览

java - 如何使用自定义用户名/密码将 h2 db 作为独立服务器运行?

过去我曾将 h2 db 用作某些 java 应用程序的嵌入式数据库,但这次我想将它作为独立服务器 (tcp) 运行,我可以从另一个客户端连接到该服务器,更改默认用户和密码

我下载了 h2db,解压缩了 zip,我在 bin 目录中看到了以下内容

我阅读了文档,发现要启动控制台以及服务器,我可以简单地执行

有了这个,我可以打开 Web 控制台,使用 username=sa 和 password="" 登录,但我找不到更改默认用户名和密码的方法

根据文档,可以通过在连接字符串中添加值来完成

但是当我尝试从 Web 控制台打开连接时出现错误

看起来用户是在服务器启动时定义的,我也读到有一个文件

我可以在上面找到服务器属性,但我只看到这样的东西

似乎在那里定义了用户名但没有密码,我找不到只为服务器定义参数的 ant 选项

我已经尝试启动服务器,后来控制台指向服务器,但我仍然找不到如何更改用户名和密码

启动服务器

连接到服务器

我的问题是:

如何定义用于访问 Web 控制台的默认用户名/密码?