ฉันพยายามทำsvn cleanup
เนื่องจากฉันไม่สามารถยอมรับการเปลี่ยนแปลงในสำเนาการทำงานของฉันและฉันได้รับข้อผิดพลาดต่อไปนี้:
sqllite: อิมเมจดิสก์ฐานข้อมูลผิดรูปแบบ
ตอนนี้ฉันทำอะไรได้บ้าง?
ฉันพยายามทำsvn cleanup
เนื่องจากฉันไม่สามารถยอมรับการเปลี่ยนแปลงในสำเนาการทำงานของฉันและฉันได้รับข้อผิดพลาดต่อไปนี้:
sqllite: อิมเมจดิสก์ฐานข้อมูลผิดรูปแบบ
ตอนนี้ฉันทำอะไรได้บ้าง?
คำตอบ:
ผมมีปัญหาเหมือนกัน. บล็อกโพสต์ต่อไปนี้ช่วยฉันแก้ไขได้: http://www.polak.ro/svn-e200030-sqlite-database-disk-image-is-malformed.html
คุณทำการตรวจสอบความสมบูรณ์บนฐานข้อมูล sqlite ที่ติดตามที่เก็บ (/.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)
แต่มีวิธีแก้ปัญหาอยู่ที่นี่: hanscarpenter.blogspot.com.au/2016/05/…
sqlite3 .svn/wc.db 'PRAGMA user_version;'
ฐานข้อมูลเดิมเพื่อรับหมายเลขที่ถูกต้อง 2. รันsqlite3 .svn/wc.db 'PRAGMA user_version = XXX;'
กับเวอร์ชันที่กู้คืนด้วยหมายเลขที่ถูกต้อง
การล้างข้อมูล SVN ไม่ทำงาน โฟลเดอร์ SVN ในระบบภายในของฉันเสียหาย ดังนั้นฉันเพิ่งลบโฟลเดอร์สร้างโฟลเดอร์ใหม่และอัปเดตจาก SVN ที่แก้ปัญหา!
หลังจากไฟดับฉันพบข้อผิดพลาดในดิสก์อิมเมจฐานข้อมูลผิดรูปแบบและคำสั่ง reindex nodes ที่แนะนำไม่ได้แก้ไขปัญหาทั้งหมดเนื่องจากข้อ จำกัด ที่ละเมิด นอกจากนี้ขั้นตอนที่อธิบายไว้ในhttp://mail-archives.apache.org/mod_mbox/subversion-users/201111.mbox/%3C874nybhpxi.fsf@stat.home.lan%3Eไม่สามารถแก้ปัญหาได้
วิธีแก้ไขในกรณีของฉัน:
สิ่งนี้อาจมีประโยชน์หากการชำระเงิน svn ดั้งเดิมของคุณมีไฟล์ที่แก้ไขหรือไม่ได้แปลงไฟล์จำนวนมากและคุณไม่ต้องการเปลี่ยนไปใช้การชำระเงิน svn ใหม่
ฉันคัดลอกโฟลเดอร์. svn จากไดเรกทอรีของเพื่อนร่วมงานของฉันและนั่นช่วยแก้ปัญหาได้
มันใช้ได้กับฉัน!
บางทีอาจเป็นวิธีแก้ปัญหา:
ตอนนี้เชื่อมต่อใหม่อีกครั้ง:
repositorie
: ของฉันSVN
(กรณีอื่น ๆ : git ฯลฯ )repositorie
โฟลเดอร์ของคุณบันทึก:
ในกรณีของฉันฉันได้สำรองไฟล์ของฉัน (กลับมาปลอดภัยนะครับ: P)
แก้ไข:
ฉันกำลังพูดถึงSVN
ปลั๊กอินบนEclipse
:)
คุณเคยเห็นโพสต์นี้ในไซต์การโค่นล้มหรือไม่? คุณยังสามารถลองตรวจสอบที่อาจเกิดขึ้นและ "แก้ไข" ฐานข้อมูลโดยตรงตามที่อธิบายไว้ที่นี่ (โปรดทราบว่าฉันไม่ใช่ผู้เชี่ยวชาญฉันเพิ่งค้นหาโดย Google อย่างรวดเร็วอาจไม่เกี่ยวข้องกับปัญหาของคุณเลย)
ส่วนตัวฉันจะลองตรวจสอบ repo อีกครั้งและใช้การเปลี่ยนแปลงของคุณอีกครั้ง ไม่แน่ใจว่าเป็นไปได้หรือไม่ในกรณีของคุณ
ตลอดการวิจัยของฉันฉันได้พบวิธีแก้ปัญหาที่ใช้ได้ 2 วิธี
หากคุณใช้การเชื่อมต่อประเภทใดก็ได้ ssh, samba, การติดตั้ง, ตัดการเชื่อมต่อ / ยกเลิกการต่อเชื่อมและเชื่อมต่อ / เชื่อมต่อใหม่ ลองอีกครั้งวิธีนี้มักจะแก้ปัญหาให้ฉันได้ หลังจากนั้นคุณสามารถทำการล้างข้อมูล svn หรือใช้งานได้ตามปกติ (ขึ้นอยู่กับว่าปัญหาเกิดขึ้นเมื่อใด) การรีบูตเครื่องคอมพิวเตอร์ของฉันยังช่วยแก้ปัญหาได้อีกด้วย ... ใช่มันโง่ฉันรู้!
บางครั้งสิ่งที่ต้องทำคือ rm -rf ไฟล์ของคุณ (หรือหากคุณไม่คุ้นเคยกับคำนี้เพียงแค่ลบโฟลเดอร์ svn ของคุณ) และชำระเงินที่เก็บ svn ของคุณอีกครั้ง โปรดทราบว่าวิธีนี้ไม่สามารถแก้ปัญหาได้เสมอไปและคุณอาจมีการเปลี่ยนแปลงที่คุณไม่ต้องการเสียไปด้วย นี่คือเหตุผลที่ฉันใช้เป็นตัวเลือกที่สอง
หวังว่านี่จะช่วยพวกคุณได้!
ฉันแก้ไขปัญหาความเสียหายของเซิร์ฟเวอร์ Visual svn rep-cache.db
มีสองวิธีแก้ปัญหา
หยุดบริการ Visual SVN Server
ดาวน์โหลด sqllite3.exe shell จากเว็บไซต์ sqllite และคัดลอกลงในโฟลเดอร์ db ของ repo
พิมพ์คำสั่งต่อไปนี้ที่ command prompt ในโฟลเดอร์ db ของ repo
- โซลูชันแรก -
sqlite3 rep-cache.db
.clone rep-cache-new.db
กด ctrl + c เพื่อออกจาก sqllite
ren rep-cache.db rep-cache-old.db
ren re-cache-new.db rep-cache.db
- โซลูชันที่ 2 -
ลบ rep-cache.db
del rep-cache.db
มันจะถูกสร้างขึ้นโดยอัตโนมัติ
ฉันแก้ไขสิ่งนี้สำหรับกรณีที่เกิดขึ้นกับฉันโดยการลบโฟลเดอร์. svn ที่ซ่อนอยู่จากนั้นดำเนินการชำระเงินในโฟลเดอร์ไปยัง URL เดียวกัน
สิ่งนี้ไม่ได้เขียนทับไฟล์ที่แก้ไขใด ๆ ของฉันและเพียงแค่กำหนดเวอร์ชันของไฟล์ที่มีอยู่ทั้งหมดแทนที่จะดึงสำเนาใหม่จากเซิร์ฟเวอร์
อย่าเสียเวลาไปกับการchecking integrity
ลบหรือลบข้อมูลwork queue
ตารางเพราะนี่เป็นวิธีแก้ปัญหาชั่วคราวและหลังจากนั้นไม่นาน
เพียงแค่ทำอย่างอื่นcheckout
และแทนที่โฟลเดอร์. svn ที่มีอยู่ด้วยโฟลเดอร์ใหม่ ทำupdate
แล้วมันควรจะราบรื่น
หากคุณติดตั้ง Tortoise SVN โปรดไปที่ตัวจัดการงานและหยุดมัน จากนั้นลองลบโฟลเดอร์ มันจะทำงาน
คำตอบที่ทำเครื่องหมายไว้อาจเป็นคำตอบที่ถูกต้องตามการล้างข้อมูลการโค่นล้ม แต่ข้อผิดพลาดนั้นเป็นข้อผิดพลาดทั่วไปซึ่งทำให้ฉันมาที่นี่หน้าคำถามนี้
โครงการของเรามีการพึ่งพา System.Data.SQLite และข้อความแสดงข้อผิดพลาดเหมือนกัน:
อิมเมจดิสก์ฐานข้อมูลผิดรูปแบบ
ในกรณีของฉันฉันได้ดำเนินการดังต่อไปนี้สคริปต์การตรวจสอบและต่อไปนี้ผ่านทางSQLiteStudio 3.1.1
pragma integrity_check
(ฉันไม่รู้ว่าสถิติเหล่านี้จะช่วยได้หรือไม่ แต่ฉันจะแบ่งปันต่อไป ... )
ไฟล์ DataBase ถูกใช้ในการใช้งานในชีวิตประจำวันเป็นเวลา 1.5 ปีผ่านโหมดบันทึกการเชื่อมต่อบนหน่วยความจำและมีขนาดใหญ่ประมาณ 750 MB มีระเบียนประมาณ 140,000 รายการต่อตารางและ 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
เปิดฐานข้อมูล 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
กระบวนการเสร็จสมบูรณ์ คุณสามารถทำงานบนที่เก็บ SVN ของคุณทำการคอมมิตอัปเดตเพิ่มลบการดำเนินการโดยไม่มีปัญหา
:-)
ในระหว่างการพัฒนาแอพฉันพบว่าข้อความนั้นมาจากการดำเนินการ INSERT และ UPDATE บ่อยครั้งและมาก ตรวจสอบให้แน่ใจว่าได้ใส่และอัปเดตหลายแถวหรือข้อมูลในการดำเนินการเดียว
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)
cd ไปยังโฟลเดอร์ที่มี. svn
rm -rf .svn
svn co http://mon.svn/mondepot/ . --force