मैं 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 ...)
इस त्रुटि संदेश की खोज करते समय, मुझे कुछ संदर्भ ( यहां और यहां ) मिले, जिन्होंने तालिका को फिर से लिखने का सुझाव दिया। (इन चर्चाओं में, 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 के लिए उपयोग की जाती है, कोई अद्यतन नहीं है)।