我在单元测试中创建H2数据库。该数据库使用以下属性:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="org.h2.Driver"/>
<property name="url" value="jdbc:h2:file:target/db/testdb"/>
<property name="username" value="sa"/>
<property name="password" value=""/>
</bean>
我使用的是com.h2database.h2
jar文件的1.3.166版。
当我运行测试时,我看到在target/db
目录中创建了数据库,并且存在testdb.h2.db
文件。我的测试运行并从数据库加载数据。我可以打开target/db/testdb.h2.db
文件,看看我用来创建数据库的SQL语句。
但是,当我尝试将target/db/testsb.h2.db
文件加载到数据库浏览工具(如DBVisualizer)时,我看不到任何表或数据。对于DBVisualizer,我指定H2(嵌入式)模式。
我也尝试过H2控制台,但是show tables
命令返回一个空的结果集。
我看不出我做错了什么:数据库文件存在,测试正确运行,但我无法在数据库浏览器中打开此文件。
有什么建议吗?
答案 0 :(得分:6)
最有可能的问题是您使用的数据库网址。
jdbc:h2:file:target/db/testdb
这意味着数据库文件存储在 相对于当前工作目录 。所以它取决于你启动应用程序的位置。如果你在另一个目录中启动了DBVisualizer(很可能你就是这样做了),那么它就会在另一个目录中创建一个 new 数据库。
为了确保您使用相同的数据库,我建议使用绝对目录名,或相对于当前用户主目录,如H2文档中所述:
jdbc:h2:~/relative/to/user/home/dir/testdb
jdbc:h2:/absolute/path/testdb
前缀file:
是可选的。
答案 1 :(得分:0)
如果您收到错误
Unsupported database file version or invalid file header in file "Old database:
/path/to/databasename.data.db - please convert the database to a SQL script and
re-create it." [90048-167]
问题是(如消息所示)您正在使用使用旧版本的h2创建的数据库。要使用dbVisualizer浏览数据库,您可以创建新的数据库驱动程序:
Tools
&gt; Driver manager...
&gt; Create a new driver
填写字段并选择正确的h2 jar文件,你应该好好去。