java .vm h2_java-H2服务器在调试时挂起

本文探讨了在启动内存数据库时如何避免使用TCP服务器,并提出在同一个线程中使用JDBC与H2数据库建立连接的建议。通过在独立进程中开启H2并设置TCP服务器,可以实现远程访问且保证数据不丢失。然而,当所有连接关闭时,内存数据库内容会消失,因此建议在测试中考虑使用文件存储的H2数据库以确保持久性。
摘要由CSDN通过智能技术生成

由于正在创建内存数据库,因此启动tcp服务器将无济于事.

我建议改为在线程中启动控制台,并在同一段代码(例如,使用jdbc)中打开与此数据库的连接,但不要关闭/释放它.

使用此代码段执行此操作:请根据H2文档添加其他选项,例如允许其他人使用(我建议暂时将其保留)

org.h2.tools.Server.createWebServer().start();

使用jdbc / jooq在第二个线程中打开数据库将如下所示(这是在Nashorn javascript中,但可以轻松地适应Java):

var conn = (new org.h2.Driver()).connect('jdbc:h2:mem:sampledb',new java.util.Properties());

var DB = org.jooq.impl.DSL.using(conn, org.jooq.SQLDialect.H2);

这样,基于内存的数据库将不会意外关闭,您将能够远程访问它.希望将其放在线程中可以保护您免受断点的影响.

更新:根据与该问题原始作者的讨论,最佳解决方案是在单独的过程中打开基于内存的H2,并在其上提供一个tcp服务器.这解决了问题,但是在一个单独的过程中.

这是开始单独过程的方法:

java -jar h2-1.4.188.jar -tcp -tcpPort 9092 -baseDir mem:mydb

这是要使用的JDBC网址:jdbc:h2:tcp:// localhost:9092 / mem:mydb

重要说明:如果该基于内存的数据库上的所有连接均已关闭,则内容将消失.因此,应谨慎使用此方法.如果您需要在测试中保持持久性,请使用基于文件的标准H2 DB.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值