2014-11-24 4901 views
9

我用自己的程序創建了數據庫,它顯示爲mydatabase.mv.db文件。如何訪問H2數據庫的* .mv.db文件?

但是,當我試圖訪問與DbVisualizer相同的數據庫,顯然相同的參數,它創建了兩個文件mydatabase.lock.dbcelebrity.h2.db,並沒有看到在程序中創建的表。

什麼是不兼容?

UPDATE

兩種設置是如下:

enter image description here

enter image description here

+0

什麼是您的程序和'DbVisualizer'使用的連接細節? – MadProgrammer 2014-11-24 00:53:08

+0

嘗試並確保路徑使用'/'而不是'''(在'DbVisualizer'中) – MadProgrammer 2014-11-24 01:00:37

+0

爲方便起見,追加'; IFEXISTS = TRUE'以避免創建虛假的數據庫文件,正如建議的[here](http:/ /stackoverflow.com/a/2443685/230513)。 – trashgod 2014-11-25 10:33:58

回答

15

在H2 1.3.x版,數據庫文件<databaseName>.h2.db是默認的。 (使用存儲引擎「PageStore」)。

在H2版本1.4.x中,數據庫文件<databaseName>.mv.db是默認值。 (使用存儲引擎「MVStore」)。 MVStore現在仍在測試階段(2014年11月)。但是,您可以通過將;mv_store=false附加到數據庫URL來禁用MVStore。

+0

我可以確認'1.4.190'版本的h2將創建一個' .h2.db'而不是' .mv.db'(甚至我設置了'MVCC = TRUE; MULTI_THREADED = TRUE' jdbc網址)。我必須做的是設置'MC_STORE = TRUE'來強制h2使用' .mv.db'文件。 – bob 2015-12-03 09:42:47

+0

我認爲你使用的是舊版本1.4.190,或者數據庫已經存在。你可以通過運行'select * from information_schema.settings'來檢查'%BUILD%'的名字嗎?在版本1.4.190中,結果('CREATE_BUILD'是用於創建數據庫的版本,'info.BUILD_ID'是當前版本)會得到'190'兩倍。順便說它是'MV_STORE'而不是'MC_STORE'。 – 2015-12-04 08:22:47

+0

對不起,我發現它是由之前創建的數據庫引起的(沒有MVCC = TRUE)。如果' .h2.db'存在,看起來h2將重新使用舊的,而創建一個名爲' .mv.db'的新的。 – bob 2015-12-05 08:39:16

2

接受的答案是幾年來老,因爲其他人可能會尋找一個更「當前」的解決方案...

得到它只是工作更新DBVizualizer使用H2 JDBC驅動程序。基本上從http://www.h2database.com/html/download.html下載「Platform-Independent Zip」,然後將h2/bin/h2-X.X.X.jar文件複製到~/.dbvis/jdbc/,然後重新啓動DBVizualizer,以便它可以獲取更新的驅動程序。

此外,在DBVizualizer中設置數據庫文件名時,請確保從文件名中刪除.mv.db