2010-05-15 11 views
7

के प्रभाव रोलबैक कैसे मैं सिर्फ एक आदेशपिछले मार डाला mysql क्वेरी

update sometable set col = '1'; 

गलती से जहां हालत निर्दिष्ट किए बिना भाग गया। क्या तालिका के पिछले संस्करण को पुनर्प्राप्त करना संभव है?

+4

पर विचार '--i-am-ए-dummy' विकल्प है जब यू db..it' बिना where' खंड – slier

उत्तर

9

आप जब तक ...

  1. क्वेरी चलाने से पहले एक सौदे शुरू कर दिया, और ...
  2. पहले से ही लेन-देन नहीं की

... तो नहीं, तुम 'भाग्य से बाहर हो, डेटाबेस के पिछले संस्करणों के किसी भी बैकअप को छोड़कर आप स्वयं को बना सकते हैं।

(यदि आप मैन्युअल रूप से प्रश्न पूछते समय transactions का उपयोग नहीं करते हैं, तो हो सकता है कि आप भविष्य में सिरदर्द को रोकने के लिए भविष्य में ऐसा करना चाहें जो आपके पास है। वे एहसास -5-सेकेंड-बाद के प्रकार को कम करने के लिए अमूल्य हैं गलती।)

+0

मैं डेटाबेस है, जिनमें से एक बैकअप ले लिया था किसी भी हटाने/अद्यतन बयान न करे उर के लिए लॉग इन वर्तमान संस्करण से बहुत अलग नहीं है। तो इस बार बचाया। –

1

नहीं। कुछ तालिका प्रकारों के लिए MySQL में transaction support है, लेकिन क्योंकि आप यह सवाल पूछ रहे हैं, मैं शर्त लगाऊंगा कि आप इसका उपयोग नहीं कर रहे हैं।

हर कोई यह एक बार करता है। यह तब होता है जब आप इसे दो बार करते हैं तो आपको चिंता करने की ज़रूरत है :)

2

भविष्य में sql_safe_updates को सक्षम करने पर विचार करें यदि आप इस तरह की चीज फिर से करने के बारे में चिंतित हैं।

SET SESSION sql_safe_updates = 1 
संबंधित मुद्दे