在H2文档中,它表示只有web服务器支持浏览器连接。这是否意味着我们只能在WebServer模式下通过控制台访问H2数据库,而不能通过TcpServer?但当我做以下测试时,结果完全不符合预期。
public class TestMem {
public static void main(String... args) throws Exception {
Class.forName("org.h2.Driver");
Connection conn = DriverManager.getConnection("jdbc:h2:mem:test");
conn.createStatement().execute("create table test(id int)");
Server server = Server.createTcpServer().start();//1.TcpServer
// Server server = Server.createWebServer().start();//2.WebServer
System.out.println("Server started and connection is open.");
System.out.println("URL: jdbc:h2:" + server.getURL() + "/mem:test");
Thread.sleep(5*60*1000);
System.out.println("Stopping server and closing the connection");
server.stop();
conn.close();
}
}
如果启动TcpServer,我可以通过以下url访问DB:jdbc:h2:tcp://localhost:9092/mem:test在控制台中。
//Use TcpServer
Server server = Server.createTcpServer().start();
但是当我启动WebServer时,我尝试使用jdbc: h2:http://localhost:8082/mem: test连接,下面的异常会抛出:IO异常:java.io.IOException:文件名、目录名或卷标语法不正确;http://localhost:8082/mem:test.h2.db[90031-172]90031/90031(帮助)。
//Use WebServer
Server server = Server.createWebServer().start();
以下是我的问题
对托马斯·穆勒的回答的一些补充意见:
“H2控制台工具...一个小型Web应用程序”
您可以将其视为DBeaver或Navicat等数据库应用程序的“小替代品”。
除此之外,如果您从与H2数据库相同的JVM中启动H2控制台(例如,它已使用org. h2启动。工具。运行cript.execute(...)),您将能够使用H2控制台工具的“嵌入式模式”连接到H2数据库,而无需使用H2 TCP服务器。
(DBeaver等其他数据库工具不会在同一个JVM中运行。如果您在DBeaver中使用嵌入式H2模式,您将连接到DBeaver的JVM内的一个额外的临时数据库。)
嵌入式模式示例
如果您在同一JVM的端口8085上启动了H2数据库"test_database",选项DB_CLOSE_DELAY=-1,并且没有启动TCP服务器...
http://localhost:8085
例如,使用以下设置以嵌入模式连接:
Setting Name: Generic H2 (Embedded)
Driver Class: org.h2.Driver
JDBC URL: jdbc:h2:mem:test_database;MODE=MySQL
UserName: {user, e.g. root}
Password: {password, e.g mypassword}
服务器模式示例
如果启动了TCP服务器,则可以在服务器模式下连接到H2数据库。你可以用
启动web浏览器并输入以下地址以显示H2控制台工具web应用程序:
http://localhost:8085
例如,使用以下设置在服务器模式下连接:
Setting Name: Generic H2 (Server)
Driver Class: org.h2.Driver
JDBC URL: jdbc:h2:tcp://localhost:9095/mem:test_database;MODE=MySQL
UserName: {user, e.g. root}
Password: {password, e.g mypassword}
您也可以使用网址
jdbc:h2:tcp://localhost:9095/mem:test_database;MODE=MySQL
例如与DBeaver连接。
H2控制台工具(使用Server.createWebServer
创建)是一个Web服务器和一个小型Web应用程序,允许您使用Web浏览器(如Firefox、GoogleChrome、Internet Explorer等)连接到数据库(任何JDBC数据库)。
H2 TCP服务器(使用Server.createTcpServer创建)是H2 JDBC客户端的服务器。它不是web服务器,也不是web应用程序。无法从web浏览器连接到此服务器。
如果同时启动控制台工具(web服务器)和TCP服务器,则可以使用浏览器连接到控制台工具,然后控制台工具可以在服务器模式下连接到H2数据库。
关于数据库URL:请参阅关于数据库URL的留档。
我对一个应用程序的JPA层进行了几个单元测试。这个JPA层由JPA实体和一个提供持久化实体所需的基本API的服务组成。单元TET直接使用javax.Persistence类来处理PersistenceManager。然后测试持久性API,我可以在日志中看到创建表和序列等的SQL语句。 persistence.xml文件的相关部分如下所示: 我已经下载了Windows安装程序H2 1.4.200,并
我也搜索了一些谷歌解决方案,但它不工作输入图像描述在这里
问题内容: 我使用以下URL通过代码创建了一个H2数据库: jdbc:h2:C:/data/fixed.db 我的代码可以创建表,执行查询。如果手动打开文件,则可以成功查看其内容并查看创建查询等 但是,当我尝试通过Web界面使用H2控制台时,看不到数据库。而是,Web控制台在此处创建 另一个 空数据库。我只是无法加载我的数据库。 我想念什么? 编辑 我的代码使用H2 1.3.175 Web控制台H
我只是试图查看嵌入式H2数据库的H2数据库内容,当我没有在中指定任何内容并从mvn spring:run开始时,spring-boot创建了嵌入式H2数据库。我可以看到hibernate JPA正在创建表,但是如果我试图访问下面URL处的h2控制台,数据库没有表。 我看到这样的建议:查看Spring启动的嵌入式H2数据库的内容 但是我不知道将建议的XML放入spring-boot的何处,即使我放了
使用和启动H2管理系统 H2 管理系统让你能够通过一个浏览器对 H2 的 SQL 数据库进行管理操作。H2 管理系统不仅可以连接 H2 数据库,也可以连接其他支持 JDBC API 的数据库。 这是一个 C/S 应用,在服务器和客户端(浏览器)上都要运行 H2 的管理程序。根据平台不同,H2 管理系统支持多种启动应用的方式: 操作系统 启动 Windows 点击 [Start], [All Pro
我已经创建了一个Spring启动应用程序,我没有使用内存中的H2数据库,而是安装了用于H2数据库的exe并在外部使用它。现在我想将我的Spring启动应用程序与这个外部H2数据库连接起来。我已经添加了依赖项,我已经在application.properties文件中添加了所有必需的属性(你可以看到下面)。此外,我还创建了一个带有注释的Entity类。但是当我尝试连接数据库时,它即使使用不同的URL