我对H2 Database
还不熟悉。作为PoC的一部分,我使用H2数据库(版本:1.4.187
)来模拟MS SQL Server数据库。我有一个应用程序,比如app1生成数据并保存到H2。另一个应用程序app2需要从H2数据库中读取并处理它读取的数据。我正在尝试使用Auto Server mode
,这样即使其中一个应用程序关闭,其他应用程序也能够读/写数据库。
在阅读了多个示例之后,我找到了如何构建h2 url并显示如下:
jdbc:h2:~/datafactory;MODE=MSSQLServer;AUTO_SERVER=TRUE;
启用tcp和远程访问,如下所示:
org.h2.tools.Server.createTcpServer("-tcpAllowOthers","-webAllowOthers").start()
有了这个,我就可以写入数据库了。现在,我想使用h2-web-console
应用程序读取数据。我可以从我的本地机器上做到这一点。但是,我无法理解如何从另一台计算机远程连接到此数据库。
我的工厂是在ubuntu机器上运行这两个应用程序,我可以使用我的机器上的Web控制台监控数据。这种方法不可能吗? 我怎么解决这个问题?
或者我是否需要使用服务器模式并明确启动h2服务器?任何帮助将不胜感激。
答案 0 :(得分:2)
默认情况下,为H2数据库禁用远程连接以进行保护。要启用对TCP服务器的远程访问,需要使用选项-tcpAllowOthers
或其他标志-webAllowOthers
,-pgAllowOthers
启动TCP服务器
。
要启动Web控制台服务器(H2控制台工具)和启用了远程连接的TCP服务器,您必须使用以下内容
java -jar /path/to/h2.jar -web -webAllowOthers -tcp -tcpAllowOthers -browser
答案 1 :(得分:0)
不完全确定,但查看以前针对相同主题回答的文档和其他问题,网址应该是这样的:
jdbc:h2:tcp://<host>:<port>/~/datafactory;MODE=MSSQLServer;AUTO_SERVER=TRUE;
似乎主机可能不是localhost,数据库可能不在内存中
答案 2 :(得分:0)
是否需要H2网络控制台?
您可以使用已启动的TCP服务器使用其他SQL工具。我使用 SQuirreL SQL Client (http://squirrel-sql.sourceforge.net/)连接到不同的数据库。
如果您需要一个Web界面,您可以使用 Adminer (https://www.adminer.org/),它可以连接到不同的数据库供应商,包括MS SQL,这恰好是您正在运行H2的模式。有一个适用于Ubuntu的Adminer Debian软件包。