এসএনএন ক্লিনআপ: স্ক্লাইট: ডেটাবেস ডিস্ক চিত্রটি বিকৃত


94

আমি একটি করার চেষ্টা করছিলাম svn cleanupকারণ আমি আমার কার্যকরী অনুলিপিতে পরিবর্তনগুলি সম্পাদন করতে পারি না এবং আমি নিম্নলিখিত ত্রুটিটি পেয়েছি:

sqllite: ডাটাবেস ডিস্ক চিত্রটি বিকৃত

ক্লিনআপ নিম্নলিখিত পাথগুলিতে প্রক্রিয়া করতে ব্যর্থ হয়েছে

আমি এখনই কি করতে পারি?

উত্তর:


99

আমারও একই সমস্যা ছিল। নিম্নলিখিত ব্লগ পোস্টটি এটি সমাধান করতে আমাকে সহায়তা করেছে: http://www.polak.ro/svn-e200030-sqlite-database-disk-image-is-malused.html

আপনি স্কেলাইট ডাটাবেসে একটি অখণ্ডতা যাচাই করে যা সংগ্রহস্থলটির ট্র্যাক রাখে (/.svn/wc.db):

sqlite3 .svn/wc.db "pragma integrity_check"

এটি কিছু ত্রুটি রিপোর্ট করা উচিত।

তারপরে আপনি এগুলি করে পরিষ্কার করতে সক্ষম হতে পারেন:

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

তারপরে যদি এখনও ত্রুটি থাকে তবে আপনি এখনও অস্থায়ী ফোল্ডারে রেপোসেটরির একটি নতুন কপি পরীক্ষা করে খুঁজে পাওয়া যায় এবং .svn ফোল্ডারটি তাজা অনুলিপি থেকে পুরানোটিতে অনুলিপি করতে পারেন। তারপরে পুরানো অনুলিপিটি আবার কাজ করবে এবং আপনি অস্থায়ী ফোল্ডারটি মুছতে পারেন।


6
এটি আসলে আমার সমস্যার সমাধান করেছে। আপনাকে অনেক ধন্যবাদ.
এরদোগান কুর্তুর

17
তবুও ত্রুটি পেলে আপনি কী করবেন: ডাটাবেস ডিস্ক চিত্রটি বিকৃত?
j

4
@jwill উপরে প্রদত্ত সমাধানটি প্রয়োগ করার পরে আমিও ত্রুটি পেয়েছি ... তবে আমি যা চেষ্টা করেছি তা হ'ল আপনার সংগ্রহস্থলের নতুন কপিটি চেকআউট করা এবং তারপরে পুরানোতে নতুন চেকআউট অনুলিপি .svn ফোল্ডারটি ওভাররাইট করা iআমি এইভাবে আমার সমস্যার সমাধান করেছি ...
রুশভ শাহ

6
অদ্ভুত, আমি পেয়েছিError: unable to identify the object to be reindexed
পেসারিয়ার

4
লিঙ্ক polak.ro/… স্থায়ীভাবে ডাউন আছে বলে মনে হচ্ছে।
ম্যাডমাইক

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

4
এটি আমার বিভিন্ন সফ্টওয়্যারটিতে থাকা একটি ত্রুটির সাথে সাহায্য করেছিল, তাই স্যার আপনাকে ধন্যবাদ!
আজিরিয়াস

আমার জন্য "রিইন্ডেক্স নোডস" কমান্ড ব্যর্থ হয়েছে, তবে বিকল্প ওয়ার্কারআউন্ড (ডাম্প থেকে ডিবি পুনরুদ্ধার) আমাকে সহায়তা করেছে! ধন্যবাদ
ইভ্যালাক্স

4
আমি সবকিছু ফেলে দেওয়া হয়নি, তবে এটি যথেষ্ট ছিল। বর্গফুট ফাইলের মাধ্যমে স্ক্রোল করে ফাইনালটি ডাগ ROLLBACK;করার COMMIT;আগে পরিবর্তন করে .read dump_all.sql
জান ক্যাটিনস 21

4
এই পদ্ধতির এখন ত্রুটিটি ব্যর্থ হয়েছে বলে মনে হচ্ছে 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), তবে এখানে একটি কার্যকারিতা রয়েছে
এমপিএসি

দৃ error়তা ত্রুটির জন্য যথাযথ সংশোধন হ'ল: 1. sqlite3 .svn/wc.db 'PRAGMA user_version;'সঠিক নম্বর পেতে মূল ডিবি এর বিরুদ্ধে চালান । 2. sqlite3 .svn/wc.db 'PRAGMA user_version = XXX;'সঠিক সংখ্যা সহ পুনরুদ্ধার করা সংস্করণটির বিরুদ্ধে চালান ।
কালানিয়াল

19

এসভিএন ক্লিনআপ কাজ করেনি। আমার স্থানীয় সিস্টেমের এসভিএন ফোল্ডারটি দূষিত হয়ে গেছে। সুতরাং আমি সবেমাত্র ফোল্ডারটি মুছে ফেলেছি, একটি নতুন তৈরি করেছি এবং এসভিএন থেকে আপডেট করেছি। যে সমস্যার সমাধান!


4
এটি এখন পর্যন্ত সবচেয়ে সহজ সমাধান। একটি নতুন ওয়ার্কিং কপি পান এবং এতে কাজ করুন: এসএনএন ইউআরএল।
জহমিক

16

পাওয়ার ব্ল্যাকআউটের পরে, আমি দৌড়ে গিয়েছিলাম ডেটাবেস ডিস্কের চিত্রটি ত্রুটিযুক্ত ত্রুটিযুক্ত এবং প্রস্তাবিত রিইন্ডেক্স নোডস কমান্ড লঙ্ঘনের কারণে সীমাবদ্ধতার কারণে সমস্ত সমস্যা সমাধান করে নি। এছাড়াও http://mail-archives.apache.org/mod_mbox/subversion-users/201111.mbox/%3C874nybhpxi.fsf@stat.home.lan%3E এ বর্ণিত পদ্ধতিটি সমস্যার সমাধান করেনি।

আমার ক্ষেত্রে সমাধান:

  • অস্থায়ী ফোল্ডারে আবার এসএনএন সংগ্রহস্থল চেকআউট করুন
  • নতুন চেকআউট থেকে দুর্নীতিগ্রস্থকে ".svn / wc.db" ফাইলটি অনুলিপি করুন, প্রতিস্থাপন করুন

এটি কার্যকর হতে পারে, যদি আপনার মূল এসএনএন চেকআউটটিতে অনেকগুলি সংশোধিত বা রূপান্তরিত ফাইল থাকে এবং আপনি কোনও নতুন এসএনএন চেকআউটটিতে স্যুইচ করতে না চান।


13

আমি আমার পিয়ার কর্মীদের ডিরেক্টরি থেকে .svn ফোল্ডারটি অনুলিপি করেছি এবং এটি সমস্যার সমাধান করেছে।


এখানে আমরা একই সিস্টেমে নতুন ওয়ার্কিং কপিটি পরীক্ষা করে দেখতে পারি এবং তারপরে পুরানো .svn ফোল্ডারটিকে নতুন .svn ফোল্ডারটি প্রতিস্থাপন করতে পারি এবং এর মাধ্যমে আমরা এই সমস্যাটিও সমাধান করতে পারি ...
রুশভ শাহ

3
  1. অন্য কোনও জায়গায় এই এসএনএন পরীক্ষা করে দেখুন
  2. লুকানো .svn ফাইলটি দেখান
  3. WC ফাইল প্রতিস্থাপন করুন

এটি আমার জন্য কাজ করে!


2

হতে পারে, একটি সমাধান হতে পারে:

  1. প্রকল্পের ডান মাউস ক্লিক করুন
  2. দল -> সংযোগ বিচ্ছিন্ন
  3. নির্বাচন করুন: এছাড়াও মুছুন ...

এখন আবার সংযোগ করুন:

  1. প্রকল্পের ডান মাউস ক্লিক করুন
  2. দল -> প্রকল্প ভাগ করুন
  3. আপনার repositorie: আমার SVN(অন্যান্য ক্ষেত্রে: গিট ইত্যাদি) নির্বাচন করুন
  4. আপনার repositorieফোল্ডারটি নির্বাচন করুন

বিঃদ্রঃ:

আমার ক্ষেত্রে, আমি আমার ফাইলগুলির একটি ব্যাকআপ করেছি। (নিরাপদ আপনার ফিরে: পি)

সম্পাদনা করুন:

আমি SVNপ্লাগইন সম্পর্কে কথা বলছি Eclipse:)


1

আপনি পোস্টটি সাবভার্সন সাইটে দেখেছেন ? আপনি এখানে বর্ণিত হিসাবে সরাসরি ডাটাবেসটি বৈধকরণ এবং "ফিক্সিং" করার চেষ্টা করতে পারেন । (দ্রষ্টব্য যে আমি কোনও বিশেষজ্ঞ নই, আমি কেবল একটি দ্রুত গুগল অনুসন্ধান করেছি your আপনার সমস্যাগুলির সাথে এটি মোটেই সম্পর্কিত নাও হতে পারে)।

ব্যক্তিগতভাবে, আমি পুনরায় পুনরায় পরীক্ষা করে দেখুন এবং আপনার পরিবর্তনগুলি পুনরায় প্রয়োগ করার চেষ্টা করব। আপনার ক্ষেত্রে এটি সম্ভব কিনা তা নিশ্চিত নন?


ধন্যবাদ, আমাকে আপনার পরামর্শটি দেখতে দিন।
রুবেেন্স মারিউজো

আবার যাচাই করাই আমি শেষ করে যাচ্ছি, অবশ্যই সবচেয়ে সহজ সমাধান (পুনরায়
প্রয়োগের

আমি আমার ক্ষেত্রে এটি সমস্যার সমাধান করেনি, কচ্ছপ এসভিএন-তে আরও অনেক ত্রুটি ঘটায়, কেবল সতর্ক করুন।
কমোর

1

আমার গবেষণাগুলি জুড়ে আমি 2 টি কার্যকর সমাধান পেয়েছি।

  1. আপনি যদি কোনও ধরণের সংযোগ, ssh, সাম্বা, মাউন্টিং, সংযোগ বিচ্ছিন্ন / আনমাউন্ট এবং পুনরায় সংযোগ / পুনরায় সংযোগ ব্যবহার করে থাকেন। আবার চেষ্টা করুন, এটি প্রায়শই আমার সমস্যার সমাধান করে। এর পরে আপনি এসএনএন ক্লিনআপ করতে পারেন বা কেবল স্বাভাবিকভাবে কাজ চালিয়ে যেতে পারেন (সমস্যাটি কখন উপস্থিত হয়েছিল তার উপর নির্ভর করে)। আমার কম্পিউটারটি পুনরায় বুট করার পরেও সমস্যাটি একবারে স্থির হয়ে গেছে ... হ্যাঁ এটি বোবা আমি জানি!

  2. কিছু সময় যা যা করা দরকার তা হ'ল আপনার ফাইলগুলি rm -rf করা হয় (বা আপনি যদি এই শব্দটির সাথে পরিচিত না হন তবে কেবল আপনার এসএনএন ফোল্ডারটি মুছুন), এবং আপনার এসএনএন সংগ্রহস্থলটি পুনরায় পরীক্ষা করে দেখুন। দয়া করে মনে রাখবেন যে এটি সর্বদা সমস্যার সমাধান করে না এবং আপনার হারাতে চান না এমন পরিবর্তনও থাকতে পারে। যে কারণে আমি এটি দ্বিতীয় বিকল্প হিসাবে ব্যবহার করি।

আশা করি এটি আপনাকে সাহায্য করবে!


1

আমি আমার ভিজ্যুয়াল এসএনএন সার্ভারের rep-cache.db দুর্নীতির সমস্যাটি সমাধান করেছি।

এগুলি দুটি সমাধান।

ভিজ্যুয়াল এসভিএন সার্ভার পরিষেবা বন্ধ করুন।

Sqllite3.exe শেল স্ক্যালাইট ওয়েবসাইট থেকে ডাউনলোড করুন এবং এটি রেপোর ডিবি ফোল্ডারে অনুলিপি করুন।

রেপোর ডিবি ফোল্ডারে কমান্ড প্রম্পটে নিম্নলিখিত কমান্ডগুলি টাইপ করুন।

- প্রথম সমাধান -

sqlite3 rep-cache.db

.clone rep-cache-new.db

স্ক্লাইট থেকে প্রস্থান করতে 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

এটি স্বয়ংক্রিয়ভাবে তৈরি করা হবে।


আপনাকে মুহাম্মদকে ধন্যবাদ - আমার যে ক্লু দরকার ছিল! সমস্যাটি আপনার ওয়ার্কিং অনুলিপিতে স্ক্লাইট ডিবি (গুলি) বা সার্ভারে থাকা একটিতে রয়েছে কিনা তা নির্ধারণ করা দরকার। কমান্ড লাইনে আপনার প্রতিশ্রুতিটি ব্যবহার করে দেখুন - যদি ফাইলটি সফলভাবে স্থানান্তরিত হয় এবং "লেনদেনের প্রতিশ্রুতি দেওয়ার সময়" ত্রুটি ঘটে থাকে তবে সমস্যাটি সম্ভবত সার্ভারের দিকেই রয়েছে। এখানে মুহাম্মদের রেজোলিউশন কবজির মতো কাজ করে। এই পুরাতন তালিকা সংরক্ষণাগারটিতে আরও বিশদ রয়েছে: svn.haxx.se/users/archive-2010-12/0257.shtml
পাউডারফ্লাস্ক

1

আমি লুকানো .svn ফোল্ডারটি মুছে ফেলা এবং তার পরে একই ইউআরএলে ফোল্ডারে একটি চেকআউট সম্পাদন করে এটির একটি ঘটনার উদাহরণের জন্য আমি এটি ঠিক করেছি।

এটি আমার কোনও পরিবর্তিত ফাইলের ওভাররাইট করতে পারেনি এবং সার্ভার থেকে নতুন কপিগুলি দখল করার পরিবর্তে বিদ্যমান সমস্ত ফাইলকে কেবল সংস্করণে পরিণত করেছে।


1

টেবিল checking integrityথেকে ডেটা চালিয়ে যাওয়া বা মুছে ফেলতে আপনার সময় নষ্ট করবেন না work queueকারণ এগুলি অস্থায়ী সমাধান এবং এটি আপনাকে কিছুক্ষণ পরে আঘাত করবে।

কেবল অন্যটি করুন checkoutএবং বিদ্যমান .svn ফোল্ডারটিকে নতুনটির সাথে প্রতিস্থাপন করুন। একটি করুন updateএবং তারপরে এটি মসৃণ হওয়া উচিত।


0

আপনি যদি কচ্ছপ এসভিএন ইনস্টল করেন তবে দয়া করে টাস্ক ম্যানেজারে যান এবং এটি বন্ধ করুন। তারপরে ফোল্ডারটি মুছতে চেষ্টা করুন। এটা কাজ করবে


0

সাবভারশন ক্লিনআপ অনুসারে চিহ্নিত উত্তরটি সঠিক হতে পারে। তবে ত্রুটিটি অবশ্যই একটি জেনেরিক, যা আমাকে এখানে নিয়ে গেছে, এই প্রশ্ন পৃষ্ঠা।

আমাদের প্রকল্পের নির্ভরতা সিস্টেম রয়েছে। ডেটা.এসকিউএলাইট এবং ত্রুটি বার্তাটি একই ছিল:

ডাটাবেস ডিস্ক চিত্রটি বিকৃত

আমার ক্ষেত্রে, আমি এসকিউএলসাইট স্টুডিও 3.1.1 এর মাধ্যমে নিম্নলিখিত চেক স্ক্রিপ্ট এবং অনুসরণগুলি সম্পাদন করেছি ।

pragma integrity_check

(এই পরিসংখ্যানগুলি সাহায্য করবে কিনা আমার কোনও ধারণা নেই তবে আমি সেগুলি যাইহোক ভাগ করে নেব ...)

ডেটাবেস ফাইলটি মেমোরিতে সংযোগ জার্নাল মোডের মাধ্যমে 1.5 বছরের জন্য প্রতিদিনের ব্যবহারে ব্যবহৃত হচ্ছে এবং এটি প্রায় 750 এমবি বড় ছিল। প্রতি টেবিলে প্রায় 140 কে রেকর্ড ছিল এবং 6 টি টেবিলটি ছিল বড়।

ইন্টিগ্রিটি চেক স্ক্রিপ্ট কার্যকর করার পরে , 11 টি সারি কার্যকর করার 30 মিনিটের পরে ফিরে আসে।

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

এই কমান্ডটি লিখে এসভিএন ডাটাবেস খুলুন,

>sqlite3 .svn/wc.db 

এখন আপনাকে কেবল এসভিএন ডিবি থেকে লক এন্ট্রি সরিয়ে ফেলা দরকার।

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

প্রক্রিয়া শেষ হয়েছে। আপনি আপনার এসভিএন সংগ্রহস্থলটিতে কাজ করতে পারেন, প্রতিশ্রুতিবদ্ধ করতে পারবেন, আপডেট করুন, যুক্ত করুন, ইস্যু ছাড়াই অপারেশন সরিয়ে ফেলতে পারবেন।

:-)


-2

অ্যাপ্লিকেশন বিকাশের সময় আমি দেখতে পেলাম যে বার্তাগুলি ঘন ঘন এবং বিশাল INSERT এবং আপডেটের অপারেশন থেকে আসে। একটি একক ক্রিয়ায় একাধিক সারি বা ডেটা INSERT এবং আপডেট করার বিষয়টি নিশ্চিত করুন Make

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
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.