为了方便,使用 h2 做为嵌入式数据库,没想到随着数据量增加,居然开始崩溃了。
几张表加起来才一百万多条记录,访问量也不大,不知道什么情况造成了某张表不可
查询,一查询就报 ArrayIndexOutOfBoundsException ,在h2的网站和issue
里面都查了一下,不知道是什么情况。
幸亏这个不是生产系统,不过生产系统也不可能用h2。里面的数据丢失一些也无所谓,
因此,只好把数据导出,然后再想办法导入。h2提供了一些工具,导出比较简单,bat文件:
java -Xms256m -Xmx1024m -XX:MaxPermSize=32m -cp "lib/h2-1.3.163.jar;%H2DRIVERS%;%CLASSPATH%" org.h2.tools.Recover %*
运行 recover.bat -dir data\db -db dbname 就会生成一个 dbname.h2.sql 这样一个文件。
然后把老的数据库文件移到别的地方,再打开h2的console,在console里面运行
runscript from 'dbname.h2.sql'
就OK了,至于丢了哪些数据,现在还不知道,不过不是重要的数据,也不去追究了。
但是这样给我一个很沉重的打击,本来我还是很喜欢h2的,没想到有这么致命的问题,
而且这已经是第二次了,看来以后这种嵌入的数据库,要开始考虑sqlite这样成熟的东西才行。
分享到:
相关推荐
此外,H2还具有良好的社区支持和活跃的开发,定期更新和修复问题,确保系统的稳定性和安全性。 安装H2数据库相对简单,压缩包内的“h2-setup-2009-12-18.exe”文件可能是旧版本的安装程序。通常,用户可以通过运行...
java -cp h2database-version-2.2.224.jar org.h2.tools.RunScript -url jdbc:h2:~/test -user sa -password -script create.sql ``` 5. **数据操作** H2支持标准的SQL语句进行数据的增删改查,例如插入数据: ...
H2 Database是一款基于Java开发的开源内存数据库系统,它同时支持嵌入式模式和服务器模式运行,具备了小型、快速、易于使用的特点,并提供了JDBC接口用于数据库的连接。H2数据库适合嵌入到Java应用程序中,不需要...
<groupId>com.h2database</groupId> <artifactId>h2 <scope>runtime ``` H2 数据库用于存储 Activiti 的流程定义和运行时数据。如果你的应用已经配置了其他数据库,只需替换相应的数据库驱动依赖即可。 **2. ...
<groupId>com.h2database</groupId> <artifactId>h2 <version>1.x.y</version> <!-- 替换为最新稳定版本 --> <scope>runtime ``` 这里我们引入了Hibernate的核心库和实体管理器,以及H2数据库作为测试数据库。...
<driver name="h2" module="com.h2database.h2"> <xa-datasource-class>org.h2.jdbcx.JdbcDataSource <!-- 更多驱动配置 --> ``` 在上述配置中,`jndi-name`定义了数据源在JNDI(Java Naming and Directory...
SonarQube是一款强大的代码质量...通过SonarQube,开发团队能够系统地管理和提升代码质量,预防问题的发生,而不是等到后期的昂贵修复。同时,SonarQube的中文插件让中文用户能够更便捷地利用其功能,提高工作效率。
【JDBC MySQL JUnit测试】 在Java开发中,JDBC(Java Database Connectivity)是用于与数据库交互的标准API,而MySQL是一种广泛使用的开源关系型...通过持续集成和自动化测试,能够及时发现和修复问题,提升代码质量。
默认情况下,它使用内置的H2数据库,但生产环境通常推荐使用更强大的数据库,如PostgreSQL或MySQL。 4. **Web服务器**:SonarQube的用户界面是基于Web的,因此需要一个Web服务器来提供服务。这个版本可能包含了内置...
本系统可能使用了如MySQL、Oracle或H2等关系型数据库,通过JDBC(Java Database Connectivity)接口与数据库进行交互。数据库建模文件(如ER图)用于描述实体间的关系,确保数据结构的合理性。 3. 业务逻辑:这部分...
H2,MySQL,SQLite,PostgreSQL,Oracle,SqlServer 分页支持 灵活的配置 连接池支持 支持LocalDate , LocalDateTime 支持lambda表达式 关系( hasOne , hasMany , belongsTo ) SQL性能统计 基于Java8 用法 ...
jpa-shop(修改中) :red_exclamation_mark: 修复 添加书籍以外的其他分类产品 合并 -> 更改为更改检测方法 为物品实体添加更新功能 :light_bulb: 新事物
Java的JDBC(Java Database Connectivity)接口可以连接各种数据库系统,如MySQL、Oracle或SQLite。开发者需要了解SQL语句,进行数据的增删改查操作。此外,考虑到性能和实时性,可能会采用内存数据库如H2或Redis。 ...
如果您发现错误,甚至崩溃,请报告该错误,以便我们进行修复。 请首先检查一下您对这一问题的bug报告已经。 如果不是,则只创建一个并填写表格。 请包括以下内容: 我的世界版本 库存同步版本 海绵版本/版本 可能...
5. **数据库集成**:应用程序可能需要存储用户数据或应用状态,因此可能会集成MySQL、Oracle或H2等数据库。Java的JDBC(Java Database Connectivity)接口使得与数据库的交互变得简单。 6. **RESTful API**:如果...
Java JDBC(Java Database Connectivity)API用于与数据库建立连接,执行SQL语句,实现数据的增删改查。 4. **数据结构与算法**: 在财务管理系统中,数据结构如链表、树、集合等用于存储和组织财务数据。算法如...
6. **数据库集成**:虽然数据可能存储在文件中,但使用数据库如SQLite或H2能提供更高效的数据管理和检索。JDBC(Java Database Connectivity)是连接Java应用程序和数据库的标准API,需要掌握SQL查询和事务处理。 7...
Java提供了Java Database Connectivity(JDBC)API,使得Java程序能与各种数据库系统通信。通过JDBC,开发者可以执行SQL查询来读取、插入、更新和删除数据。 【异常处理】 在处理财务数据时,错误处理至关重要。...