① h2数据库测试成功 为什么进去之后报错
H2数据库有好几种运行方式,你说的这种应该就段烂滑是“嵌入式"运行方式,它限制只能有一个客户端进行操作,优点握腊是性能好。
除了嵌历槐入式 ,还有 服务器 运行方式(就是像oracle/ sqlserver一样的),但除此以外,还提供了混合模式,这种模式比较常用,和嵌入式的唯一区别就是写jdbc url时,这样写:
jdbc:h2:<数据库文件路径名>;AUTO_SERVER=TRUE
② 什么是H2数据库
H2是Thomas Mueller提供的一个开源的、纯java实现的关系数据库。
H2是一个开源的嵌入式数据库引擎,采用java语言编写,不受平台的限制,同时H2提供了一个十分方便的web控制台用于操作和管理数据库内容。H2还提供兼容模式,可以兼容一些主流的数据库,因此采用H2作为开发期的数据库非常方便。
H2最大的用途在于可以同应用程序打包在一起发布,这样可以非常方便地存储少量结构化数据。
它的另一个用途是用于单元测试。启动速度快,而且可以关闭持久化功能,每一个用例执行完随即还原到初始状态。
H2的第三个用处是作为缓存,作为NoSQL的一个补充。当某些场景下数据模型必须为关系型,可以拿它当Memcached使,作为后端MySQL/Oracle的一个缓冲层,缓存一些不经常变化但需要频繁访问的数据,比如字典表、权限表。不过这样系统架构就会比较复杂了。
(2)H2数据库测试扩展阅读:
H2数据库运行方式:
1、内存模式
数据库只在内存中运行,关闭连接后数据库将被清空,适合测试环境,连接字符串:jdbc:h2:mem:DBName;DB_CLOSE_DELAY=-1,如果不指定DBName,则以私有方式启动,只允许一个连接。
2、嵌入式
数据库持久化存储为单个文件。连接字符串:jdbc:h2:file:~/.h2/DBName;AUTO_SERVER=TRUE。~/.h2/DBName表示数据库文件的存储位置,如果第一次连接则会自动创建数据库。
3、服务模式
H2支持三种服务模式:web server:此种运行方式支持使用浏览器访问H2 Console。
CP server:支持客户端/服务器端的连接方式。
PG server:支持PostgreSQL客户端。
③ H2数据库
According to documentation, closing the last connection closes the database and when closing the database, the database is automatically compacted for up to 200 milliseconds
.
I guess these together may cause data loss & corruption when a
single connection is repeatedly created, data altered, connection
closed, new connection created, etc. - eventually resulting in
exception such as "Block not found in id [1, -128, 8, 42] [1.4.186/50]"
when trying to access the DB. Version 1.3.176 (last stable) works fine with this, version 1.4.186 crashes and corrupts data.
The
behavior can be fixed by appending ";DB_CLOSE_DELAY=-1" to the DB URL,
i.e. disabling autoclosing DB when last connection is closed. I though
it might have had something to do with 1.4's new "FS" file locking
protocol, but changing that to old "FILE" doesn't seem to help.
Of
course this is not how a DB connection is typically used - when using a
connection pool, this would go unnoticed - and I found this purely by
accident. But it's a bug anyway, isn't it?
Best Regards,
Joonas
狗哥找的
④ springboot一个工程如何调用另一个工程的接口
不知道你的两个项目连的是不是同一个数液扒据库,如果是同一个数据库的话可以放进去数据库中,闹茄昌另一个项目去数据库读取
或者两纳亩个项目在同一台服务器的话可以放在内存中,然后去读,比如用redis
⑤ h2数据库在linux服务器怎么使用
简单来说就是用jdbc:h2:mem:h2db来建立内存模式,并建表, 然后jdbc:h2:tcp://192.168.20.141:8082/mem:h2db来访问上面的内存数据库 package test; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; imp...
⑥ h2数据库递归查不来数据
h2数据库递归查不来数据原因如下。
1、可能出现类型不匹配的问题:例如数据库中存储拆裂的是int类型的值嫌贺,前端传递过来的是string类型的值,所以查询不到匹配的数据。
2、还有就是可能存在数据库缓存的问题:这里数据库的二级缓存,即是对数据的crud有影响,每次的crud之后,查询的数据都是从数据库的缓存中获取的数据,不是从数据库中获取的最新的旅者闭数据。
⑦ h2console怎么加载数据库
1.1、搭建JavaWeb测试项目
创建一个【H2DBTest】JavaWeb项目,找到H2数据库的jar文件,如下图所示:
H2数据库就一个jar文件,这个Jar文件里面包含了使用JDBC方式连接H2数据库时使用的驱动类,将"h2-1.4.183.jar"加入到【H2DBTest】项目中,如下图所示:
二、启动H2数据库
既然是要将H2数据库作为我们Web应用的一部分嵌入进来,那么我们就要在Web应用中启动H2数据库的服务,这样我们才能够连接到H2数据库,因此我们可以编写一个专门用于启动H2数据库服务的监听器(Listener)
⑧ h2数据库比mysql快多少
快速是因为h2数据库是内存数据库,所以相对来说比Mysql会仔携快速一些,可以用于测试,h2属于关系型宴戚世数据库,但是正式项目不适用于h2,会影响性能晌肢。