svn सफाई: sqlite: डेटाबेस डिस्क छवि विकृत है


93

मैं करने की कोशिश कर रहा था svn cleanupक्योंकि मैं अपनी कार्यशील प्रति में परिवर्तन नहीं कर सकता, और मुझे निम्नलिखित त्रुटि मिली:

sqllite: डेटाबेस डिस्क छवि विकृत है

क्लीनअप निम्न पथों को संसाधित करने में विफल रहा

मैं अभी क्या कर सकता हूं?

जवाबों:


98

मुझे भी यही समस्या थी। निम्नलिखित ब्लॉग पोस्ट ने मुझे इसे हल करने में मदद की: http://www.polak.ro/svn-e200030-sqlite-database-disk-image-is-malformed.html

यदि आप रिपॉजिटरी (/.svn/wc.db) पर नज़र रखने वाले sqlite डेटाबेस पर एक अखंडता जाँच करते हैं:

sqlite3 .svn/wc.db "pragma integrity_check"

यह कुछ त्रुटियों की रिपोर्ट करना चाहिए।

तब आप उन्हें करने में सक्षम हो सकते हैं:

sqlite3 .svn/wc.db "reindex nodes"
sqlite3 .svn/wc.db "reindex pristine"

यदि उसके बाद भी त्रुटियां हैं, तो भी आपको एक अस्थायी से रिपॉजिटरी की एक नई कॉपी की जांच करने का विकल्प मिला है और .svan फ़ोल्डर को नई कॉपी से पुराने में कॉपी करें। फिर पुरानी कॉपी को फिर से काम करना चाहिए और आप अस्थायी फ़ोल्डर को हटा सकते हैं।


6
इससे वास्तव में मेरी समस्या हल हो गई। आपका बहुत बहुत धन्यवाद।
एर्दोगन कुर्तुर

17
यदि आपको अभी भी त्रुटि मिलती है तो आप क्या करते हैं: डेटाबेस डिस्क छवि विकृत है?
j

3
@jwill मैंने ऊपर दिए गए समाधान को लागू करने के बाद भी त्रुटि प्राप्त की ... लेकिन मैंने जो कोशिश की वह केवल आपकी रिपॉजिटरी की नई कॉपी चेकआउट है और उसके बाद पुराने चेक करने के लिए नई चेकआउट कॉपी के .svan फ़ोल्डर को पुराने ... मैंने इस तरह से मेरी समस्या को हल किया ...
रुषभ शाह

6
अजीब, मुझे मिलता हैError: unable to identify the object to be reindexed
पेसियर

4
लिंक polak.ro/… स्थायी रूप से नीचे लगता है।
MadMike

21

अखंडता की जांच

sqlite3 .svn/wc.db "pragma integrity_check"

साफ - सफाई

sqlite3 .svn/wc.db "reindex nodes"
sqlite3 .svn/wc.db "reindex pristine"

वैकल्पिक रूप से

आप उस डेटाबेस की सामग्री को डंप करने में सक्षम हो सकते हैं जिसे बैकअप फ़ाइल में पढ़ा जा सकता है, फिर इसे एक नए डेटाबेस फ़ाइल में वापस लाएँ:

sqlite3 .svn/wc.db

sqlite> .mode insert
sqlite> .output dump_all.sql
sqlite> .dump
sqlite> .exit

mv .svn/wc.db .svn/wc-corrupt.db
sqlite3 .svn/wc.db

sqlite> .read dump_all.sql
sqlite> .exit

2
यह एक त्रुटि के साथ मदद करता है जो मैं अलग सॉफ्टवेयर के साथ कर रहा था, इसलिए धन्यवाद सर!
अज़ीरियस

मेरे लिए "रेनडेक्स नोड्स" कमांड विफल रही, लेकिन वैकल्पिक वर्कअराउंड (डंप से डीबी को फिर से बनाना) ने मेरी मदद की! धन्यवाद।
EvAlex

1
मुझे सब कुछ नहीं मिला, लेकिन यह पर्याप्त था। एसक्यूएल फ़ाइल के माध्यम से स्क्रॉल किया गया और डोंग ROLLBACK;से COMMIT;पहले अंतिम को बदल दिया .read dump_all.sql
जन कैटिन्स

2
यह दृष्टिकोण अब त्रुटि के साथ विफल होता दिख रहा है svn: E235000: In file 'D:\Development\SVN\Releases\TortoiseSVN-1.9.7\ext\subversion\subversion\libsvn_wc\wc_db_wcroot.c' line 311: assertion failed (format >= 1), हालांकि यहाँ एक समाधान है: hanscarpenter.blogspot.com.au/2016/05/…
mpeac

दावे की त्रुटि के लिए उचित निर्धारण है: 1. sqlite3 .svn/wc.db 'PRAGMA user_version;'सही संख्या प्राप्त करने के लिए मूल db के खिलाफ चलाएं । 2. sqlite3 .svn/wc.db 'PRAGMA user_version = XXX;'सही संख्या के साथ बहाल संस्करण के खिलाफ चलाएं ।
क्रोनियल

19

SVN सफाई काम नहीं किया। मेरे स्थानीय सिस्टम पर SVN फ़ोल्डर दूषित हो गया। इसलिए मैंने सिर्फ फ़ोल्डर को हटा दिया, एक नया बनाया, और एसवीएन से अपडेट किया। यह समस्या हल हो गई!


1
यह अब तक का सबसे आसान उपाय है। एक नई वर्किंग कॉपी प्राप्त करें और उसके साथ काम करें: svn co URL।
जहमीक

16

पावर ब्लैकआउट के बाद, मैं डेटाबेस डिस्क छवि में चला गया विकृत त्रुटि है और सुझाए गए reindex नोड्स आदेशों का उल्लंघन करने के कारण सभी मुद्दों को ठीक नहीं करता है। साथ ही http://mail-archives.apache.org/mod_mbox/subversion-users/201111.mbox/%3C874nybhpxi.fsf@stat.home.lan%3E में वर्णित प्रक्रिया से समस्या का समाधान नहीं हुआ।

मेरे मामले में समाधान:

  • एक अस्थायी फ़ोल्डर में फिर से svn रिपॉजिटरी चेकआउट करें
  • नए चेकआउट से भ्रष्ट व्यक्ति को कॉपी, यानी प्रतिस्थापित करें, फ़ाइल "। Svn / wc.db"

यह उपयोगी हो सकता है, यदि आपके मूल svn चेकआउट में कई संशोधित या अनवांटेड फ़ाइलें हैं और आप एक नए svn चेकआउट पर स्विच नहीं करना चाहते हैं।


13

मैंने अपने सहकर्मी कार्यकर्ता की निर्देशिका से .svn फ़ोल्डर की प्रतिलिपि बनाई और उस समस्या को ठीक किया।


यहाँ हम केवल एक ही सिस्टम में नई वर्किंग कॉपी की जांच कर सकते हैं और फिर पुराने .svn फ़ोल्डर को नए .svn फ़ोल्डर से बदल सकते हैं और इस तरह से हम इस समस्या को भी हल कर सकते हैं ...
रुषभ शाह

3
  1. इस svn को दूसरी जगह पर देखें
  2. छुपी हुई .svn फ़ाइल दिखाएं
  3. wc फ़ाइल बदलें

यह मेरे लिए काम करता है!


2

हो सकता है, एक समाधान हो सकता है:

  1. राइट माउस प्रोजेक्ट पर क्लिक करें
  2. टीम -> डिस्कनेक्ट
  3. चयन करें: इसके अलावा हटाएं ...

अब, फिर से कनेक्ट करें:

  1. राइट माउस प्रोजेक्ट पर क्लिक करें
  2. टीम -> शेयर परियोजना
  3. आपका चयन करें repositorie: मेराSVN (अन्य मामला: गिट, आदि)
  4. अपने repositorieफ़ोल्डर का चयन करें

ध्यान दें:

मेरे मामले में, मैंने अपनी फ़ाइलों का बैकअप किया। (सुरक्षित उर वापस: पी)

संपादित करें:

मैं SVNप्लगइन के बारे में बात कर रहा हूँ Eclipse:)


1

क्या आपने इस पोस्ट को तोड़फोड़ साइट पर देखा है ? आप संभवतः डेटाबेस को सीधे यहां बताए अनुसार मान्य और "ठीक" करने का भी प्रयास कर सकते हैं । (ध्यान दें कि मैं कोई विशेषज्ञ नहीं हूं, मैंने सिर्फ एक त्वरित Google खोज की है। आपके मुद्दों से संबंधित नहीं हो सकता है)।

व्यक्तिगत रूप से, मैं फिर से रेपो की जाँच करने और आपके परिवर्तनों को फिर से लागू करने की कोशिश करूँगा। यकीन नहीं होता कि क्या आपके मामले में यह संभव है?


धन्यवाद, मुझे अपना सुझाव देखने दें।
मरिज़ोनो

फिर से जाँच करना कि मैंने क्या किया, निश्चित रूप से सबसे आसान समाधान (पुन: लागू ^ ^ में परिवर्तन के आधार पर)
एल्गुई

मेरा मामला यह है कि इस समस्या का हल नहीं हुआ, कछुआ एसवीएन में बहुत अधिक त्रुटियां हुईं, बस चेतावनी दी गई।
कोमोरेरा

1

अपने शोधों के दौरान, मुझे 2 व्यवहार्य समाधान मिले हैं।

  1. यदि आप किसी भी प्रकार के कनेक्शन का उपयोग कर रहे हैं, ssh, samba, बढ़ते, डिस्कनेक्ट / अनमाउंट करें और फिर से कनेक्ट / रिमाउंट करें। फिर से कोशिश करें, इससे अक्सर मेरे लिए समस्या हल हो गई। उसके बाद आप svn सफाई कर सकते हैं या बस सामान्य रूप से काम कर सकते हैं (जब समस्या दिखाई देती है पर निर्भर करता है)। मेरे कंप्यूटर को रिबूट करने से समस्या भी एक बार ठीक हो गई ... हाँ यह गूंगा है मुझे पता है!

  2. कुछ समय के लिए सब करना है अपनी फ़ाइलों को rm -rf (या यदि आप पद से परिचित नहीं हैं, तो बस अपने svn फ़ोल्डर को हटा दें), और अपने svn भंडार को एक बार फिर से पढ़ लें। कृपया ध्यान दें कि यह हमेशा समस्या को हल नहीं करता है और आपके पास ऐसे बदलाव भी हो सकते हैं जिन्हें आप खोना नहीं चाहते हैं। यही कारण है कि मैं इसे दूसरे विकल्प के रूप में उपयोग करता हूं।

आशा है कि यह आप लोगों की मदद करेगा!


1

मैं दृश्य svn सर्वर rep-cache.db भ्रष्टाचार की मेरी समस्या को हल किया।

उनके दो उपाय हैं।

Visual SVN सर्वर सेवा बंद करें।

Sqllite3.exe sqllite वेबसाइट से शेल डाउनलोड करें और इसे रेपो के db फ़ोल्डर में कॉपी करें।

रेपो के db फ़ोल्डर में कमांड प्रॉम्प्ट पर निम्न कमांड टाइप करें।

- पहला प्रयोग -

sqlite3 rep-cache.db

.clone rep-cache-new.db

sqllite से बाहर निकलने के लिए ctrl + c दबाएं।

ren rep-cache.db rep-cache-old.db

ren re-cache-new.db rep-cache.db

- दूसरा समाधान -

हटाना rep-cache.db

del rep-cache.db

यह स्वचालित रूप से बनाया जाएगा।


शुक्रिया मुहम्मद - बस मुझे चाहिए सुराग! यह निर्धारित करने की आवश्यकता है कि समस्या आपकी वर्किंग कॉपी या सर्वर पर मौजूद स्क्वैलाइट db (s) के साथ है। कमांड लाइन पर अपनी प्रतिबद्धता का प्रयास करें - यदि फ़ाइल को सफलतापूर्वक स्थानांतरित किया जाता है और "कमिटेशन ट्रांजैक्शन" करते समय त्रुटि होती है, तो समस्या संभवतः सर्वर की तरफ है। यहां मुहम्मद का संकल्प एक आकर्षण की तरह काम करता है। इस पुराने सूची संग्रह में अधिक विवरण हैं: svn.haxx.se/users/archive-2010-12/0257.shtml
powderflask

1

मैंने इसे छिपाए गए। Svn फ़ोल्डर को हटाकर और फिर उसी URL पर फ़ोल्डर पर एक चेकआउट प्रदर्शन करके मेरे लिए यह तय किया।

इसने मेरी किसी भी संशोधित फाइल को अधिलेखित नहीं किया और सर्वर से नई प्रतियों को हथियाने के बजाय केवल सभी मौजूदा फाइलों को संस्करणित किया।


1

अपना समय बर्बाद न करें checking integrityया डेटा को नष्ट न करेंwork queueतालिका क्योंकि ये अस्थायी समाधान हैं और यह आपको थोड़ी देर बाद वापस आ जाएगा।

बस एक checkoutऔर करें और मौजूदा .svn फ़ोल्डर को नए के साथ बदलें। ए करें updateऔर फिर इसे सुचारू रूप से चलना चाहिए।


0

यदि आप कछुआ SVN स्थापित करते हैं, तो कृपया कार्य प्रबंधक पर जाएँ और इसे रोकें। फिर फ़ोल्डर को हटाने का प्रयास करें। यह काम करेगा


0

तोड़फोड़ सफाई के अनुसार चिह्नित उत्तर सही हो सकता है। लेकिन त्रुटि निश्चित रूप से एक सामान्य है, जो मुझे यहां ले गई, यह प्रश्न पृष्ठ।

हमारी परियोजना पर निर्भरता System.Data.SQLite और त्रुटि संदेश एक ही था:

डेटाबेस डिस्क छवि विकृत है

मेरे मामले में, मैंने SQLiteStudio 3.1.1 के माध्यम से चेक स्क्रिप्ट और फ़ॉलोइंग का पालन किया है ।

pragma integrity_check

(मुझे नहीं पता कि ये आँकड़े मदद करेंगे, लेकिन मैं उन्हें वैसे भी साझा करने जा रहा हूँ ...)

डेटाबेस फ़ाइल को मेमोरी पर कनेक्शन जर्नल मोड के माध्यम से 1.5 साल तक हर रोज उपयोग किया जा रहा है, और लगभग 750 एमबी बड़ा था। प्रति टेबल में लगभग 140K रिकॉर्ड थे और 6 टेबल यह बड़ी थी।

इंटीग्रिटी चेक स्क्रिप्ट के निष्पादन के बाद, निष्पादन के 30 मिनट के बाद 11 पंक्तियों को वापस कर दिया गया था।

wrong # of entries in index sqlite_autoindex_MyTableName_1
wrong # of entries in index MyOtherTableAndOrIndexName_1
wrong # of entries in index sqlite_autoindex_MyOtherTableAndOrIndexName_2
etc...

सभी परिणाम सूचकांक के बारे में थे। प्रत्येक अनुक्रमणिका के पुन: निर्माण के बाद, मेरी समस्या का समाधान हो गया।

reindex sqlite_autoindex_MyTableName_1;
reindex MyOtherTableAndOrIndexName_1;
reindex sqlite_autoindex_MyOtherTableAndOrIndexName_2;

पुन: अनुक्रमित करने के बाद, अखंडता जांच "ओके" हुई।

मुझे यह त्रुटि पिछले साल मिली है, और मुझे बैकअप से डीबी बहाल किया गया था, और फिर सभी परिवर्तनों को फिर से प्रतिबद्ध किया, जो एक वास्तविक दुःस्वप्न था ...


-1

एक निर्देशिका ताला लोगों के लिए चिंता करने की कोई जरूरत नहीं है।

बस आपको करने की ज़रूरत है, अगर sqllite3 स्थापित नहीं है, तो कमांड के नीचे टाइप करें,

>sudo apt-get install sqlite3

इस कमांड को टाइप करके SVN डेटाबेस खोलें,

>sqlite3 .svn/wc.db 

अब बस आपको SVN DB से ताले प्रविष्टियों को हटाने की आवश्यकता है।

sqlite>  select * from wc_lock;
1|-1           
sqlite>  delete from wc_lock;
sqlite>  select * from wc_lock;
sqlite>  .q

प्रक्रिया पूरी हुई। आप अपने एसवीएन रिपॉजिटरी पर काम कर सकते हैं, बिना किसी समस्या के ऑपरेशन कर सकते हैं, अपडेट कर सकते हैं, जोड़ सकते हैं, हटा सकते हैं।

:-)


-2

ऐप डेवलपमेंट के दौरान मैंने पाया कि संदेश लगातार और बड़े पैमाने पर INSERT और UPDATE परिचालनों से आते हैं। INSERT और एक ही ऑपरेशन में कई पंक्तियों या डेटा को सुनिश्चित करें।

var updateStatementString : String! = ""

for item in cardids {

let newstring = "UPDATE "+TABLE_NAME+" SET pendingImages = '\(pendingImage)\' WHERE cardId = '\(item)\';"
            updateStatementString.append(newstring)

        }


        print(updateStatementString)
        let results = dbManager.sharedInstance.update(updateStatementString: updateStatementString)

        return Int64(results)

-4

सीडी युक्त फ़ोल्डर में .svn

rm -rf .svn
svn co http://mon.svn/mondepot/ . --force
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.