Sto usando PostgreSQL 8.4.15. Durante l'esecuzione pg_dumpper il backup di un database, ho riscontrato il seguente errore:
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 ...)
Durante la ricerca di questo messaggio di errore, ho trovato un paio di riferimenti ( qui e qui ) che hanno suggerito di reindicizzare la tabella. (In queste discussioni, c'era un riferimento all'interrogazione della pg_classtabella per trovare il pg_toast_XXXXXXvalore giusto , ma sembrava che fosse perché non era visualizzato nei loro messaggi di errore. Ho saltato questa parte perché avevo un valore visualizzato nel messaggio di errore Immagino che potrebbe essere una comodità a causa di una versione successiva di PostgreSQL.)
Ho eseguito il seguente:
REINDEX table pg_toast.pg_toast_987654321;
VACUUM ANALYZE my_table;
Ora sono in grado di utilizzare pg_dumpsenza errori.
Cosa pg_toaste cosa hanno effettivamente fatto questi comandi? Si tratta semplicemente di una semplice pulizia o potrebbero essersi sbarazzati di alcune righe in quella tabella? Cosa potrebbe aver causato il problema in primo luogo?
Ci sono circa 300000 righe in questa tabella, ma mi aspetto che ci siano solo circa 250 nuove righe dal precedente backup riuscito (questa tabella viene utilizzata solo per INSERT / SELECT, senza AGGIORNAMENTI).