আমি একটি করার চেষ্টা করছিলাম svn cleanup
কারণ আমি আমার কার্যকরী অনুলিপিতে পরিবর্তনগুলি সম্পাদন করতে পারি না এবং আমি নিম্নলিখিত ত্রুটিটি পেয়েছি:
sqllite: ডাটাবেস ডিস্ক চিত্রটি বিকৃত
আমি এখনই কি করতে পারি?
আমি একটি করার চেষ্টা করছিলাম svn cleanup
কারণ আমি আমার কার্যকরী অনুলিপিতে পরিবর্তনগুলি সম্পাদন করতে পারি না এবং আমি নিম্নলিখিত ত্রুটিটি পেয়েছি:
sqllite: ডাটাবেস ডিস্ক চিত্রটি বিকৃত
আমি এখনই কি করতে পারি?
উত্তর:
আমারও একই সমস্যা ছিল। নিম্নলিখিত ব্লগ পোস্টটি এটি সমাধান করতে আমাকে সহায়তা করেছে: 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 ফোল্ডারটি তাজা অনুলিপি থেকে পুরানোটিতে অনুলিপি করতে পারেন। তারপরে পুরানো অনুলিপিটি আবার কাজ করবে এবং আপনি অস্থায়ী ফোল্ডারটি মুছতে পারেন।
Error: unable to identify the object to be reindexed
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
ROLLBACK;
করার COMMIT;
আগে পরিবর্তন করে .read dump_all.sql
।
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)
, তবে এখানে একটি কার্যকারিতা রয়েছে
sqlite3 .svn/wc.db 'PRAGMA user_version;'
সঠিক নম্বর পেতে মূল ডিবি এর বিরুদ্ধে চালান । 2. sqlite3 .svn/wc.db 'PRAGMA user_version = XXX;'
সঠিক সংখ্যা সহ পুনরুদ্ধার করা সংস্করণটির বিরুদ্ধে চালান ।
এসভিএন ক্লিনআপ কাজ করেনি। আমার স্থানীয় সিস্টেমের এসভিএন ফোল্ডারটি দূষিত হয়ে গেছে। সুতরাং আমি সবেমাত্র ফোল্ডারটি মুছে ফেলেছি, একটি নতুন তৈরি করেছি এবং এসভিএন থেকে আপডেট করেছি। যে সমস্যার সমাধান!
পাওয়ার ব্ল্যাকআউটের পরে, আমি দৌড়ে গিয়েছিলাম ডেটাবেস ডিস্কের চিত্রটি ত্রুটিযুক্ত ত্রুটিযুক্ত এবং প্রস্তাবিত রিইন্ডেক্স নোডস কমান্ড লঙ্ঘনের কারণে সীমাবদ্ধতার কারণে সমস্ত সমস্যা সমাধান করে নি। এছাড়াও http://mail-archives.apache.org/mod_mbox/subversion-users/201111.mbox/%3C874nybhpxi.fsf@stat.home.lan%3E এ বর্ণিত পদ্ধতিটি সমস্যার সমাধান করেনি।
আমার ক্ষেত্রে সমাধান:
এটি কার্যকর হতে পারে, যদি আপনার মূল এসএনএন চেকআউটটিতে অনেকগুলি সংশোধিত বা রূপান্তরিত ফাইল থাকে এবং আপনি কোনও নতুন এসএনএন চেকআউটটিতে স্যুইচ করতে না চান।
আমি আমার পিয়ার কর্মীদের ডিরেক্টরি থেকে .svn ফোল্ডারটি অনুলিপি করেছি এবং এটি সমস্যার সমাধান করেছে।
হতে পারে, একটি সমাধান হতে পারে:
এখন আবার সংযোগ করুন:
repositorie
: আমার SVN
(অন্যান্য ক্ষেত্রে: গিট ইত্যাদি) নির্বাচন করুনrepositorie
ফোল্ডারটি নির্বাচন করুনবিঃদ্রঃ:
আমার ক্ষেত্রে, আমি আমার ফাইলগুলির একটি ব্যাকআপ করেছি। (নিরাপদ আপনার ফিরে: পি)
সম্পাদনা করুন:
আমি SVN
প্লাগইন সম্পর্কে কথা বলছি Eclipse
:)
আপনি পোস্টটি সাবভার্সন সাইটে দেখেছেন ? আপনি এখানে বর্ণিত হিসাবে সরাসরি ডাটাবেসটি বৈধকরণ এবং "ফিক্সিং" করার চেষ্টা করতে পারেন । (দ্রষ্টব্য যে আমি কোনও বিশেষজ্ঞ নই, আমি কেবল একটি দ্রুত গুগল অনুসন্ধান করেছি your আপনার সমস্যাগুলির সাথে এটি মোটেই সম্পর্কিত নাও হতে পারে)।
ব্যক্তিগতভাবে, আমি পুনরায় পুনরায় পরীক্ষা করে দেখুন এবং আপনার পরিবর্তনগুলি পুনরায় প্রয়োগ করার চেষ্টা করব। আপনার ক্ষেত্রে এটি সম্ভব কিনা তা নিশ্চিত নন?
আমার গবেষণাগুলি জুড়ে আমি 2 টি কার্যকর সমাধান পেয়েছি।
আপনি যদি কোনও ধরণের সংযোগ, ssh, সাম্বা, মাউন্টিং, সংযোগ বিচ্ছিন্ন / আনমাউন্ট এবং পুনরায় সংযোগ / পুনরায় সংযোগ ব্যবহার করে থাকেন। আবার চেষ্টা করুন, এটি প্রায়শই আমার সমস্যার সমাধান করে। এর পরে আপনি এসএনএন ক্লিনআপ করতে পারেন বা কেবল স্বাভাবিকভাবে কাজ চালিয়ে যেতে পারেন (সমস্যাটি কখন উপস্থিত হয়েছিল তার উপর নির্ভর করে)। আমার কম্পিউটারটি পুনরায় বুট করার পরেও সমস্যাটি একবারে স্থির হয়ে গেছে ... হ্যাঁ এটি বোবা আমি জানি!
কিছু সময় যা যা করা দরকার তা হ'ল আপনার ফাইলগুলি rm -rf করা হয় (বা আপনি যদি এই শব্দটির সাথে পরিচিত না হন তবে কেবল আপনার এসএনএন ফোল্ডারটি মুছুন), এবং আপনার এসএনএন সংগ্রহস্থলটি পুনরায় পরীক্ষা করে দেখুন। দয়া করে মনে রাখবেন যে এটি সর্বদা সমস্যার সমাধান করে না এবং আপনার হারাতে চান না এমন পরিবর্তনও থাকতে পারে। যে কারণে আমি এটি দ্বিতীয় বিকল্প হিসাবে ব্যবহার করি।
আশা করি এটি আপনাকে সাহায্য করবে!
আমি আমার ভিজ্যুয়াল এসএনএন সার্ভারের 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 ফোল্ডারটি মুছে ফেলা এবং তার পরে একই ইউআরএলে ফোল্ডারে একটি চেকআউট সম্পাদন করে এটির একটি ঘটনার উদাহরণের জন্য আমি এটি ঠিক করেছি।
এটি আমার কোনও পরিবর্তিত ফাইলের ওভাররাইট করতে পারেনি এবং সার্ভার থেকে নতুন কপিগুলি দখল করার পরিবর্তে বিদ্যমান সমস্ত ফাইলকে কেবল সংস্করণে পরিণত করেছে।
টেবিল checking integrity
থেকে ডেটা চালিয়ে যাওয়া বা মুছে ফেলতে আপনার সময় নষ্ট করবেন না work queue
কারণ এগুলি অস্থায়ী সমাধান এবং এটি আপনাকে কিছুক্ষণ পরে আঘাত করবে।
কেবল অন্যটি করুন checkout
এবং বিদ্যমান .svn ফোল্ডারটিকে নতুনটির সাথে প্রতিস্থাপন করুন। একটি করুন update
এবং তারপরে এটি মসৃণ হওয়া উচিত।
সাবভারশন ক্লিনআপ অনুসারে চিহ্নিত উত্তরটি সঠিক হতে পারে। তবে ত্রুটিটি অবশ্যই একটি জেনেরিক, যা আমাকে এখানে নিয়ে গেছে, এই প্রশ্ন পৃষ্ঠা।
আমাদের প্রকল্পের নির্ভরতা সিস্টেম রয়েছে। ডেটা.এসকিউএলাইট এবং ত্রুটি বার্তাটি একই ছিল:
ডাটাবেস ডিস্ক চিত্রটি বিকৃত
আমার ক্ষেত্রে, আমি এসকিউএলসাইট স্টুডিও 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;
পুনরায় সূচকের পরে, অখণ্ডতা পরীক্ষার ফলাফল "ঠিক আছে"।
আমি গত বছর এই ত্রুটিটি পেয়েছি এবং আমাকে ব্যাকআপ থেকে ডিবি পুনরুদ্ধার করা হয়েছিল, এবং তারপরে সমস্ত পরিবর্তনগুলি পুনরায় প্রতিশ্রুতিবদ্ধ যা একটি বাস্তব দুঃস্বপ্ন ছিল ...
ডিরেক্টরি লক ছেলেদের জন্য চিন্তা করার দরকার নেই।
শুধু আপনাকে যা করতে হবে তা হল, যদি 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
প্রক্রিয়া শেষ হয়েছে। আপনি আপনার এসভিএন সংগ্রহস্থলটিতে কাজ করতে পারেন, প্রতিশ্রুতিবদ্ধ করতে পারবেন, আপডেট করুন, যুক্ত করুন, ইস্যু ছাড়াই অপারেশন সরিয়ে ফেলতে পারবেন।
:-)
অ্যাপ্লিকেশন বিকাশের সময় আমি দেখতে পেলাম যে বার্তাগুলি ঘন ঘন এবং বিশাল 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)