
後
$ pg_dumpall -U postgres -f /tmp/pgall.sql
我看到以下內容:
pg_dump: SQL command failed
pg_dump: Error message from server: ERROR: missing chunk number 0 for toast value 43712886 in pg_toast_16418
pg_dump: The command was: COPY public.page_parts (id, name, filter_id, content, page_id) TO stdout;
pg_dumpall: pg_dump failed on database "radiant", exiting
我沒有之前的備份。我該如何修復它?
提前致謝。
答案1
這意味著您的資料庫由於某種原因基本上已損壞。
您需要做的是嘗試逐段存取表 page_parts(一次一行),以確定哪一行已損壞,然後刪除該行。最簡單的方法可能是執行 SELECT * FROM page_parts LIMIT ,並對表中的行進行二分搜尋(從中間開始,將每個部分切成兩半等)。一旦您確定了該行,請將其刪除,然後您應該能夠轉儲資料庫的其餘部分。當然,如果資料價值很高,一旦獲得該行,您還可以識別它是哪一列。
答案2
謝謝。建立簡單的腳本。
514 -- 從 page_parts 中選擇 count(*)
for ((i=0; i<514; i++ )); do psql -U postgres radiant -c "SELECT * FROM page_parts LIMIT 1 offset $i" >/dev/null || echo $i; done
ERROR: missing chunk number 0 for toast value 43712886 in pg_toast_16418
433