我一直在努力使用数据库URL概述部分提到的以下连接字符串从Spring Boot应用程序连接H2数据库:
spring.datasource.url=jdbc:h2:tcp://localhost:9092/~/test-db
我还尝试了许多不同的tcp(服务器模式)连接组合,但仍然出现错误,例如“连接中断:”java。网运行Spring Boot app时,SocketTimeoutException:连接超时:localhost:9092”。
@SpringBootApplication
public class Application {
// code omitted
@Bean(initMethod = "start", destroyMethod = "stop")
public Server h2Server() throws SQLException {
return Server.createTcpServer("-tcp", "-tcpAllowOthers", "-tcpPort", "9092");
}
}
那么,如何解决这个问题并通过服务器模式连接到H2数据库呢?
你似乎有点困惑。
H2可以在两种不同的“模式”下运行。
本地模式意味着H2“正常工作”,您可以使用JDBC连接URL中的file:
事物访问此模式。JDBC驱动程序本身完成所有数据库工作,例如,它打开文件、写入数据,它完成所有工作。根本没有“数据库服务器”。或者,如果您愿意,JDBC驱动程序是它自己的服务器,尽管它不打开端口。
在这种情况下,您需要一个(单独的)JVM,并在服务器模式下单独启动H2,然后可以使用相同的库(仍然是H2.jar)作为JDBC服务器。在这种模式下,这两件事是完全分开的——如果需要,可以运行h2。jar在一台机器上作为服务器,并运行相同的h2。jar安装在完全不同的机器上,只是为了连接到另一台H2机器。数据库服务器机器完成了大部分工作,“客户机”H2只是JDBC驱动程序。H2与mysql或postgres在这种模式下没有什么不同:您有一个作为数据库引擎运行的“应用程序”/JVM进程,允许多个不同的进程连接到它,如果您愿意,甚至可以来自世界各地完全不同的机器。
您可以使用JDBC字符串中的tcp:内容访问此模式。
如果您真的愿意,您可以运行这种模式,并且仍然在一台机器上,甚至在一个JVM上拥有所有功能,但您为什么要这样做呢?无论您认为这将“解决锁定错误”的原因是什么,都无法通过在单个JVM上运行所有这些东西来修复。只有两种选择:
您很可能需要一个单独的JVM,它在之前启动并托管h2数据库;它需要在“客户端”JVM(将连接到它的JVM)开始运行之前运行。Catalina不是你要找的“服务器”,它是org。h2.工具。服务器,如果它说“找不到”,则需要修复maven导入。这需要一个单独的JVM(您可以编写这样的代码:哦,嘿,h2服务器上没有单独的JVM,所以我现在就在这里启动它,但这意味着该进程需要永远悬而未决,这很奇怪。因此,您需要一个单独的JVM进程)。
你还没有解释你在做什么。但是,让我们说,你正在做的是:
确切地说,如何完成第三部分是一个单独的问题-如果您需要帮助,请提出一个新问题,并命名用于运行这些内容、粘贴配置文件等的相关工具。
测试通过,即数据输入数据库,检查,一切正常。 但当我在调试模式下运行测试,在测试末尾放一个断点,尝试连接到数据库时,它是空的,连表都没有,更别提数据了。要连接,我使用dbever。在连接字符串中,我编写jdbc:h2:mem:mytestdb;db_close_on_exit=false(我尝试了jdbc:h2:tcp://localhost:9092/mem:mytestdb)。检查连接通过,写
我需要帮助。我不知道这个项目出了什么问题。我无法连接到h2数据库。即使我没有持久化任何对象,只是关闭连接,我也会得到错误。 对不起,我知道,这已经被问过几次了,但没有一个答案符合我的情况。 我得到的错误: pom.xml: Hibernate Utils类: 储存库 项目结构:
我在持久性中有以下配置。我的jpa应用程序的xml: 我想它被称为“自动混合模式”,我应该能够使用h2控制台中的jdbc:h2:file:c:/workdir/db/dev url访问它。 我启动h2控制台: 然后,我只看到INFORMATION\u SCHEMA,没有看到我的应用程序创建的表。 怎么了?
问题内容: 这是我简单的测试脚本。只是试图做一个基本的选择语句。在教程中找到了基本知识。 经过一个小时的搜索并尝试了一些解决方案,我比开始时就更接近解决问题了。希望我在某个地方犯了一个简单的错误,但我找不到它… 这是我遇到的错误 任何帮助将非常感激! 问题答案: 如果未在URL中指定,则该方言的默认驱动程序将为“ SQL Server” [1]。这意味着您需要在/etc/unixODBC/odbc
我已经把学校的IT项目带回家完成,虽然我可以在学校连接到我的数据库,但我不能在我自己的电脑上连接到它。我更改了数据库类中的目录,并且几乎100%确定该目录是正确的。它总是给我这样的错误: 驱动程序成功加载无法连接:[Microsoft][ODBC驱动程序管理器]未找到数据源名称且未指定默认驱动程序java.sql.sqlException:[Microsoft][ODBC驱动程序管理器]未找到数据
2012年12月19日下午7:26:55 DBConnect严重:null java.sql.sqlexception:[Microsoft][ODBC Driver Manager]未找到数据源名称,也未在sun.jdbc.ODBC.jdbc.ddc.createsqlexception(jdbcodbc.jdbc.jdbc.jdbc.jdbc.jdbc.jdbc.jdbc.jdbc.jdbc.