Estoy usando PostgreSQL 8.4.15. Mientras ejecutaba pg_dump
para hacer una copia de seguridad de una base de datos, recibí el siguiente error:
pg_dump: SQL command failed
pg_dump: Error message from server: ERROR: missing chunk number 0 for toast value 123456789 in pg_toast_987654321
pg_dump: The command was: COPY public.my_table (id, .... all the columns ...)
Al buscar este mensaje de error, encontré un par de referencias ( aquí y aquí ) que sugerían reindexar la tabla. (En estas discusiones, había una referencia a la consulta de la pg_class
tabla para encontrar el pg_toast_XXXXXX
valor correcto , pero parecía que era porque no se mostraba en sus mensajes de error. Omití esta parte porque tenía un valor mostrado en el mensaje de error Supongo que podría ser una conveniencia debido a una versión posterior de PostgreSQL).
Ejecuté lo siguiente:
REINDEX table pg_toast.pg_toast_987654321;
VACUUM ANALYZE my_table;
Ahora puedo usar pg_dump
sin errores.
¿Qué pg_toast
y qué hicieron realmente estos comandos? ¿Se trata simplemente de una simple limpieza o podrían haber eliminado algunas filas en esa tabla? ¿Qué pudo haber causado el problema en primer lugar?
Hay alrededor de 300000 filas en esta tabla, pero esperaría que solo haya alrededor de 250 filas nuevas desde la copia de seguridad anterior exitosa (esta tabla solo se usa para INSERTAR / SELECCIONAR, sin ACTUALIZACIONES).