2010-03-14 130 views
14

有一个在我的src目录(Java,Eclipse的)一个H2数据库文件:h2test.dbH2(嵌入模式)数据库文件的问题

问题:

  • 开始h2.jar从命令行(因此在端口8082上的h2浏览器接口),我已经在h2test.db中创建了两个表'test1'和'test2',并且我已经在其中放入了一些数据;

  • 当试图从Java代码(JDBC)访问它们时,它会引发“表未找到异常”。 java代码中的“show tables”显示一个0行的结果集。另外,当从java代码(CREATE TABLE ...等)创建一个新表('newtest')时,之后启动h2.jar浏览器界面时我看不到它;只显示另外两个表('test1'和'test2')(但是随后可以从java代码中访问新创建的表'newtest')。

我对嵌入式数据库没有经验;我相信我在这里做了一些根本性的错误。我的假设是,我正在访问同一个文件 - 一次来自java应用程序,一次来自h2控制台 - 浏览器界面。我似乎无法理解,我在这里做错了什么?

编辑:按要求加入一些代码:

Java代码:

Class.forName("org.h2.Driver"); 
String url = "jdbc:h2:" + "db/h2test.db"; 
String user = "aeter"; 
String password = "aeter"; 
Connection conn = DriverManager.getConnection(url, user, password); 
PreparedStatement ps2 = conn.prepareStatement("Show tables;"); 
ResultSet rs = ps2.executeQuery();

此结果集具有0行(无表),而不是显示我的2个表。

H2控制台浏览器界面设置:

Settings: Generic h2(embedded) 
driver class: org.h2.Driver 
JDBC URL: jdbc:h2:../../workspace/project_name/src/db/h2test.db 
user name: aeter 
password: aeter 

EDIT2:我将数据库复制到一个新的文件夹。现在新文件夹中的db文件显示为'newtest'表(来自java代码)和'test1'和'test2'表(来自控制台 - 浏览器h2接口) - 与旧的db完全相同文件被显示。所以这个问题仍然存在于db文件的副本中。

回答

14

对于嵌入式模式,您需要检查路径。例如,使用路径相对于你的home目录:

"jdbc:h2:file:~/db/h2test.db" 

可以肯定,使用完整路径:

"jdbc:h2:file:/users/aeter/db/h2test.db" 

为方便起见,追加;IFEXISTS=TRUE,以避免产生虚假的数据库文件。

有关更多信息,请参阅Connecting to a Database using JDBC

H2 Server URL是相对于指定为main()的参数-baseDir而言的。

+0

@Lubos:链接已死 – Chris 2018-02-18 09:26:24

+0

@Lubos:结果是“301永久移动”。 – trashgod 2018-02-18 15:56:21

1

你也可以喜欢这个

"jdbc:h2:file:db/h2test.db" 

那么Java DB查找从文件夹的项目文件夹

->projectName // project folder 
-->src  // src folder 
-->db   // here your database folder 
-->.... 
1

如果你正在使用Hibernate的尝试这个在hibernate.cfg.xml文件:

<property name="connection.url">jdbc:h2:file:db/h2test</property> 

最后没有* .db扩展名

3

如果在JDBC URL中使用某些特殊参数,那么也可能会出现问题,数据库文件名可能因各种情况而有所不同。

以我的情况下,我有两个网址:

  • JDBC:H 2:〜/ XXX; MVCC = FALSE; MV_STORE = FALSE
  • JDBC:H 2:〜/ XXX

这第一个案例创建了XXX.h2.db文件,第二个XXX.mv.db,请注意。

+0

此mv.db文件默认启用,因为h2版本1.4.177 Beta(2014-04-12) 证据:http://www.h2database.com/html/changelog.html?highlight=mv_store – Reborn 2016-11-25 14:44:09