簡體   English   中英

H2數據庫損壞

[英]H2 database corruption

有沒有辦法在H2數據庫啟動應用程序之前檢查數據庫損壞? 如果我發現數據已損壞,我想在應用程序啟動時從備份zip文件運行自動還原。

我只是通過連接到數據庫來檢查它,因為如果DB文件即使它是空的,我仍然可以連接並生成默認表。

我還想為數據庫中的每個表創建一個select語句,以確保它的工作。 我沒有在H2數據庫中找到任何內置的sql函數來檢查數據損壞。

要檢查數據庫文件是否存在,您可以使用

if (new java.io.File(databaseFileName).exists()) { ... }

如果文件存在,但數據庫已損壞,那么通常您將無法連接到它(嘗試連接將引發異常)。 這是我所知道的最快驗證方式。

數據庫文件存在的風險很小,但尚未完全初始化。 如果是這種情況,則某些表不存在。 驗證所有表存在的標准方法是使用DatabaseMetaData.getTables

但是,除非您使用某些危險功能(例如禁用事務日志或禁用數據庫文件鎖定),否則數據庫不應該損壞,如果您使用最新版本的H2。 如果數據庫確實已損壞,那么這可能是您如何使用H2的問題,或者可能是H2本身的錯誤。 將帶有詳細信息的郵件發送到H2 Google Group可能是有意義的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM