pg_dump: Mensaje de error del servidor: ERROR: falta el fragmento número 0 para el valor de brindis 43712886 en pg_toast_16418

pg_dump: Mensaje de error del servidor: ERROR: falta el fragmento número 0 para el valor de brindis 43712886 en pg_toast_16418

Después

$ pg_dumpall -U postgres -f /tmp/pgall.sql 

Veo lo siguiente:

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

No tengo copias de seguridad anteriores. ¿Cómo puedo arreglarlo?

Gracias de antemano.

Respuesta1

Esto significa que su base de datos está básicamente corrupta, por alguna razón.

Lo que debe hacer es intentar acceder a la tabla page_parts pieza por pieza (una fila a la vez), para determinar qué fila está dañada y luego eliminar la fila. Probablemente, la forma más fácil de hacer esto es hacer SELECT * FROM page_parts LIMIT y hacerlo como una búsqueda binaria en las filas de la tabla (comience en el medio, corte cada pieza por la mitad, etc.). Una vez que haya identificado la fila, elimínela y debería poder volcar el resto de la base de datos. Una vez que tenga la fila, también podrá identificar qué columna individual es, por supuesto, si los datos son de alto valor.

Respuesta2

Gracias. Crea un guión sencillo.

514 - seleccione recuento (*) de page_parts

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

información relacionada