pg_dump:來自伺服器的錯誤訊息:錯誤:pg_toast_16418 中的 toast 值 43712886 缺少區塊編號 0

pg_dump:來自伺服器的錯誤訊息:錯誤:pg_toast_16418 中的 toast 值 43712886 缺少區塊編號 0

$ 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

相關內容