2010-03-14 133 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