后
$ 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
我没有更早的备份。 我该如何解决?
提前致谢。
这意味着你的数据库基本上是腐败的,出于某种原因。
您需要做的是尝试逐个访问表page_parts(一次一行),以确定哪一行损坏,然后删除该行。 最简单的方法是做一个SELECT * FROM page_parts LIMIT,然后在表格中对行进行二进制search(从中间开始,将每个部分切成两半)。 一旦你确定了行,删除它,你应该能够转储数据库的其余部分。 一旦你有了这一行,你也可以确定它是哪一个单独的列,当然,如果数据是高价值的。
日Thnx。 创build简单的脚本。
514 – 从page_parts中selectcount(*)
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