2013-04-08 86 views
3

我得到這個奇怪的錯誤(PostgreSQL的)錯誤:無法打開關係

Caused by: org.postgresql.util.PSQLException: ERROR: could not open 
relation base/17369/1684: No such file or directory 

我如何恢復它? 任何想法?

謝謝

+5

由什麼查詢產生?這可能很小,但假設它不是。請閱讀並按照以下說明緊急*:http://wiki.postgresql.org/wiki/Corruption。然後編輯你的問題,包括基本信息,如Pg版本,導致錯誤的命令,PostgreSQL日誌文件的內容,操作系統,文件系統,最近斷電事件,崩潰,磁盤問題等。同時顯示'pg_test_fsync'的輸出和'postgresql.conf'中'fsync'參數的值。 – 2013-04-08 10:54:24

+0

很可能是磁盤故障或文件意外刪除。 – 2013-04-09 15:59:18

+0

做什麼克雷格林格說。 – 2013-05-15 01:18:26

回答

7

您丟失了與表1684和數據庫17369相關的文件。檢查目錄庫/ 17369中的名稱爲1684的存在文件 。

你能確定它是表:

1)獲取數據庫名稱:select * from pg_database where oid=17369

2)獲取表名(連接到受影響的數據庫):select * from pg_class where oid=1684

有可能是沒有更多你可以做。只從備份中恢復。

1

可能有多種原因。如果合理,最好的辦法是在通過診斷程序運行硬件後從備份中恢復。

如果不希望從備份中恢復,那麼您需要停止Postmaster,製作數據庫的副本,並儘快獲得專業幫助。數據可能可以或不可以恢復,你需要知道這件事正在進行。另外,我會建議超出Craig指出的鏈接,在這種情況下(可能會刪除文件),從複製中恢復,最好在另一個系統上的整個文件系統的塊級拷貝。

FWIW我觀察到PostgreSQL在嚴重濫用的硬件上運行,並且在硬件超出限制時出現許多索引損壞問題(例如,數據庫服務器位於熱門,不通風的衣櫃中的門層以上),但這看起來不像一個(索引損壞相對容易修復,但通常錯誤信息有點不同)。

現在,另外,它可以有可能與當前數據庫備份中恢復數據。很明顯,我們不會知道這一點,直到嘗試它。