PostgreSQL 8.4.15를 사용하고 있습니다. pg_dump데이터베이스 백업을 실행 하는 동안 다음 오류가 발생했습니다.
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 ...)
이 오류 메시지를 검색 할 때 테이블을 다시 색인화하도록 제안한 몇 가지 참조 ( here 및 here )를 발견했습니다 . (이 토론에서는 pg_class올바른 pg_toast_XXXXXX값 을 찾기 위해 테이블 을 쿼리하는 것에 대한 참조가 있었지만 오류 메시지에 표시되지 않았기 때문인 것 같습니다. 오류 메시지에 값이 표시되어 있으므로이 부분을 건너 뛰었습니다. PostgreSQL의 이후 버전으로 인해 편리 할 수 있습니다.)
나는 다음을 실행했다.
REINDEX table pg_toast.pg_toast_987654321;
VACUUM ANALYZE my_table;
이제 pg_dump오류없이 사용할 수 있습니다.
무엇 pg_toast이러한 명령은 실제로 무슨 짓을 한거야? 이것들은 단순한 정리에 관한 것입니까? 아니면 해당 테이블의 일부 행을 제거 할 수 있습니까? 처음에 문제의 원인은 무엇입니까?
이 테이블에는 약 300000 개의 행이 있지만 이전의 성공적인 백업 이후 약 250 개의 새 행만있을 것으로 예상합니다 (이 테이블은 INSERT / SELECT에만 사용되며 업데이트는 없음).