2012-10-14 12 views
5

में किसी अद्यतन को रोलबैक कैसे करें टर्मिनल (ubuntu lucid में) में SQLL का उपयोग करके मेरे PostgreSQL डेटाबेस में कुछ रिकॉर्ड संपादित करते समय, मैंने गलत अपडेट किया।PostgreSQL

बजाय

-

update mytable set start_time='13:06:00' where id=123; 

मैं टाइप किया -

update mytable set start_time='13:06:00'; 

तो, सभी रिकॉर्ड अब एक ही start_time मूल्य हो रही है।

क्या इस परिवर्तन को पूर्ववत करने का कोई तरीका है? तालिका में कुछ 500+ रिकॉर्ड हैं, और मुझे नहीं पता कि प्रत्येक रिकॉर्ड के लिए start_time मान

क्या यह हमेशा के लिए खो गया है?

+3

भविष्य के लिए: आपको स्वत: अनुकूल सक्षम के साथ नहीं चलना चाहिए। –

+0

सबक सीखा! अपडेट करने से पहले हमेशा बैकअप लें, बस सुनिश्चित करें! यदि आपने पॉइंट-इन-टाइम रिकवरी (पीआईटीआर) सक्षम किया है तो यह संभव हो सकता है। – jerjer

उत्तर

6

मुझे लगता है कि यह एक लेनदेन था जो पहले से ही प्रतिबद्ध है? यदि हां, तो "प्रतिबद्ध" का अर्थ है, आप वापस नहीं जा सकते हैं।

यदि आप भाग्यशाली हैं तो कुछ डेटा पुनर्प्राप्त करने योग्य हो सकते हैं। अब डेटाबेस बंद करो।

Here's an answer I wrote on the same topic earlier। मुझे आशा है कि यह सहायक होगा।

यह भी हो सकता है: Recoved deleted rows in postgresql

जब तक डेटा बिल्कुल महत्वपूर्ण नहीं है, बस बैकअप से पुनर्स्थापित करें, यह बहुत आसान और कम दर्दनाक होगा। यदि आपके पास बैकअप नहीं हैं, तो अपने आप को अच्छी तरह से थका हुआ मानें।

+0

धन्यवाद..मैं ने पोस्टग्रेस सेवा को रोक दिया..क्या कोई तरीका है कि मैं अब डेटा पुनर्प्राप्त कर सकता हूं? – damon

+1

@damon पूरे डेटाबेस की फ़ाइल-सिस्टम स्तर की प्रतिलिपि लें और इसे कहीं सुरक्षित रखें। –