pembersihan svn: sqlite: gambar disk basis data rusak


94

Saya mencoba melakukan a svn cleanupkarena saya tidak dapat melakukan perubahan dalam copy pekerjaan saya, dan saya mendapatkan kesalahan berikut:

sqllite: gambar disk basis data rusak

Pembersihan gagal memproses jalur berikut

Apa yang bisa saya lakukan sekarang?

Jawaban:


99

Saya memiliki masalah yang sama. Posting blog berikut membantu saya menyelesaikannya: http://www.polak.ro/svn-e200030-sqlite-database-disk-image-is-malformed.html

Anda melakukan pemeriksaan integritas pada database sqlite yang melacak repositori (/.svn/wc.db):

sqlite3 .svn/wc.db "pragma integrity_check"

Itu harus melaporkan beberapa kesalahan.

Kemudian Anda mungkin bisa membersihkannya dengan melakukan:

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

Jika masih ada kesalahan setelah itu, Anda masih memiliki opsi untuk memeriksa salinan baru dari repositori ke folder sementara dan menyalin folder .svn dari salinan baru ke yang lama. Kemudian salinan lama akan berfungsi kembali dan Anda dapat menghapus folder sementara.


6
ini benar-benar memecahkan masalah saya. Terima kasih banyak.
Erdogan Kurtur

17
Apa yang Anda lakukan jika Anda masih mendapatkan Kesalahan: citra disk basis data rusak?
j akan

3
@jwill Saya juga mendapat kesalahan setelah menerapkan solusi yang diberikan di atas ... Tapi yang saya coba hanyalah checkout salinan baru dari repositori Anda dan kemudian menimpa folder .svn dari salinan checkout baru ke yang lama..saya memecahkan masalah saya seperti ini ...
Rushabh Shah

6
Aneh, saya mendapatkanError: unable to identify the object to be reindexed
Pacerier

4
Link polak.ro/… sepertinya mati secara permanen.
MadMike

21

Pemeriksaan integritas

sqlite3 .svn/wc.db "pragma integrity_check"

Membersihkan

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

kalau tidak

Anda mungkin dapat membuang konten database yang dapat dibaca ke file cadangan, lalu menyeruputnya kembali ke file database baru:

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
Ini membantu dengan kesalahan yang saya alami dengan perangkat lunak lain, jadi terima kasih Pak!
Azirius

Bagi saya perintah "reindex node" gagal, tetapi solusi alternatif (membuat ulang db dari dump) membantu saya! Terima kasih.
EvAlex

1
Saya tidak membuat semuanya dicampakkan, tetapi itu sudah cukup. Menggulir file sql dan mengubah final ROLLBACK;menjadi COMMIT;sebelum doung the .read dump_all.sql.
Jan Katins

2
Pendekatan ini sekarang tampaknya gagal dengan kesalahan 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), namun ada solusi di sini: hanscarpenter.blogspot.com.au/2016/05/…
mpeac

Perbaikan yang tepat untuk kesalahan pernyataan adalah: 1. jalankan sqlite3 .svn/wc.db 'PRAGMA user_version;'melawan db asli untuk mendapatkan nomor yang benar. 2. berjalan sqlite3 .svn/wc.db 'PRAGMA user_version = XXX;'melawan versi yang dipulihkan dengan nomor yang benar.
Kronis

19

Pembersihan SVN tidak berhasil. Folder SVN di sistem lokal saya rusak. Jadi saya baru saja menghapus folder itu, membuat yang baru, dan memperbarui dari SVN. Itu memecahkan masalah!


1
Sejauh ini, ini adalah solusi termudah. Dapatkan copy pekerjaan baru dan kerjakan itu: svn co URL.
Jahmic

16

Setelah pemadaman listrik, saya menemukan gambar disk database adalah kesalahan format dan perintah node indeks ulang yang disarankan tidak memperbaiki semua masalah karena kendala yang dilanggar. Juga prosedur yang dijelaskan di http://mail-archives.apache.org/mod_mbox/subversion-users/201111.mbox/%3C874nybhpxi.fsf@stat.home.lan%3E tidak menyelesaikan masalah.

Solusi dalam kasus saya:

  • Periksa repositori svn lagi ke folder sementara
  • Salin, yaitu ganti, file ".svn / wc.db" dari checkout baru ke yang rusak

Ini mungkin berguna, jika svn checkout asli Anda berisi banyak file yang dimodifikasi atau tidak berversi dan Anda tidak ingin beralih ke checkout svn baru.


13

Saya menyalin folder .svn dari direktori rekan kerja saya dan itu memperbaiki masalah.


Di sini kita juga dapat memeriksa copy pekerjaan baru di sistem yang sama saja dan kemudian mengganti folder .svn lama dengan folder .svn baru dan melalui cara ini kita juga dapat menyelesaikan masalah ini ...
Rushabh Shah

3
  1. lihat svn ini di tempat lain
  2. tampilkan file .svn yang tersembunyi
  3. ganti file wc

ini berhasil untuk saya!


2

Mungkin, bisa jadi solusi:

  1. klik kanan mouse pada proyek
  2. tim -> putuskan sambungan
  3. Pilih: Hapus juga ...

Sekarang, hubungkan kembali:

  1. klik kanan mouse pada proyek
  2. tim -> Bagikan proyek
  3. pilih repositoriemilikmu: milikku SVN(kasus lain: git, dll)
  4. pilih repositoriefolder Anda

catatan:

Dalam kasus saya, saya melakukan backup file saya. (amankan kembali: P)

Edit:

Saya berbicara tentang SVNplugin di Eclipse:)


1

Pernahkah Anda melihat posting ini di situs subversi? Anda juga dapat mencoba memvalidasi dan "memperbaiki" database secara langsung seperti yang dijelaskan di sini . (Perhatikan bahwa saya bukan ahli, saya hanya melakukan pencarian cepat di Google. Mungkin tidak terkait dengan masalah Anda sama sekali).

Secara pribadi, saya akan mencoba memeriksa repo lagi dan menerapkan kembali perubahan Anda. Tidak yakin apakah ini mungkin dalam kasus Anda?


Terima kasih, izinkan saya melihat saran Anda.
Rubens Mariuzzo

memeriksa lagi adalah apa yang akhirnya saya lakukan, pasti soltion termudah (tergantung pada perubahan untuk mengajukan permohonan kembali ^^)
elgui

Saya kasus saya ini tidak menyelesaikan masalah, juga menyebabkan lebih banyak kesalahan di Tortoise SVN, hanya peringatkan.
komorra

1

Sepanjang penelitian saya, saya telah menemukan 2 solusi yang layak.

  1. Jika Anda menggunakan jenis koneksi apa pun, ssh, samba, mount, putuskan / lepas dan sambungkan kembali / pasang kembali. Coba lagi, ini sering menyelesaikan masalah saya. Setelah itu Anda dapat melakukan pembersihan svn atau tetap bekerja secara normal (tergantung kapan masalah muncul). Mem-boot ulang komputer saya juga memperbaiki masalah sekali ... ya itu bodoh, saya tahu!

  2. Kadang-kadang yang harus dilakukan hanyalah meng-rm -rf file Anda (atau jika Anda tidak terbiasa dengan istilah tersebut, hapus saja folder svn Anda), dan periksa kembali repositori svn Anda sekali lagi. Harap perhatikan bahwa ini tidak selalu menyelesaikan masalah dan Anda mungkin juga memiliki perubahan yang tidak ingin hilang. Itulah mengapa saya menggunakannya sebagai opsi kedua.

Semoga ini bisa membantu kalian!


1

Saya memecahkan masalah kerusakan visual svn server rep-cache.db saya.

Ada dua solusi.

Hentikan layanan Visual SVN Server.

Unduh shell sqllite3.exe dari situs sqllite dan salin ke folder db repo.

Ketik perintah berikut pada command prompt di folder db repo.

- Solusi Pertama -

sqlite3 rep-cache.db

.clone rep-cache-new.db

tekan ctrl + c untuk keluar dari sqllite.

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

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

- Solusi ke-2 -

Hapus Rep-cache.db

del rep-cache.db

itu akan dibuat secara otomatis.


Terima kasih Muhammad - hanya petunjuk yang saya butuhkan! Seseorang perlu menentukan apakah masalahnya ada pada sqlite db (s) di copy pekerjaan Anda atau yang ada di server. Coba komit Anda pada baris perintah - jika file berhasil ditransfer dan kesalahan terjadi saat "Melakukan Transaksi", maka masalahnya mungkin ada di sisi server. Resolusi Muhammad disini bekerja seperti pesona. Arsip listserve lama ini memiliki detail lebih lanjut: svn.haxx.se/users/archive-2010-12/0257.shtml
powderflask

1

Saya memperbaiki ini untuk kejadian yang terjadi pada saya dengan menghapus folder .svn yang tersembunyi dan kemudian melakukan checkout pada folder ke URL yang sama.

Ini tidak menimpa file saya yang dimodifikasi & hanya membuat versi semua file yang ada alih-alih mengambil salinan baru dari server.


1

Jangan buang waktu Anda checking integrityatau menghapus data dariwork queue tabel karena ini adalah solusi sementara dan itu akan memukul Anda kembali setelah beberapa saat.

Lakukan saja yang lain checkoutdan ganti folder .svn yang ada dengan yang baru. Lakukan updatedan kemudian akan lancar.


0

Jika Anda menginstal Tortoise SVN, Silakan pergi ke pengelola tugas dan hentikan. Kemudian coba hapus folder tersebut. itu akan berhasil


0

Jawaban yang ditandai mungkin benar, menurut pembersihan subversi. Tetapi kesalahan itu jelas merupakan kesalahan umum, yang membawa saya ke sini, halaman pertanyaan ini.

Proyek kami memiliki ketergantungan System.Data.SQLite dan pesan kesalahannya sama:

database gambar disk salah format

Dalam kasus saya, saya telah mengeksekusi skrip pemeriksaan berikut dan yang berikut ini melalui SQLiteStudio 3.1.1 .

pragma integrity_check

(Saya tidak tahu apakah statistik ini akan membantu, tetapi saya akan tetap membagikannya ...)

File DataBase digunakan untuk penggunaan sehari-hari selama 1,5 tahun, melalui mode jurnal koneksi pada Memori, dan berukuran sekitar 750 MB. Ada sekitar 140K record per tabel dan 6 tabel sebesar ini.

Setelah eksekusi skrip Pemeriksaan Integritas , 11 baris dikembalikan setelah 30 menit waktu eksekusi.

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...

Semua hasil tentang indeks. Menindaklanjuti pembangunan kembali setiap indeks, masalah saya teratasi.

reindex sqlite_autoindex_MyTableName_1;
reindex MyOtherTableAndOrIndexName_1;
reindex sqlite_autoindex_MyOtherTableAndOrIndexName_2;

Setelah pengindeksan ulang, pemeriksaan integritas menghasilkan "ok".

Saya mendapat kesalahan ini tahun lalu, dan saya memulihkan DB dari cadangan, dan kemudian melakukan kembali semua perubahan, yang merupakan mimpi buruk yang nyata ...


-1

tidak perlu khawatir untuk kunci direktori guys.

Yang perlu Anda lakukan adalah, Jika sqllite3 tidak diinstal, ketik perintah di bawah ini,

>sudo apt-get install sqlite3

Buka database SVN dengan mengetik perintah ini,

>sqlite3 .svn/wc.db 

Sekarang yang perlu Anda lakukan adalah menghapus entri kunci dari SVN DB.

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

Proses Selesai. Anda dapat mengerjakan repositori SVN Anda, melakukan komit, memperbarui, menambah, menghapus operasi tanpa masalah.

:-)


-2

Selama pengembangan aplikasi, saya menemukan bahwa pesan berasal dari operasi INSERT dan UPDATE yang sering dan masif. Pastikan untuk MEMASUKKAN dan MEMPERBARUI beberapa baris atau data dalam satu operasi tunggal.

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

cd ke folder yang berisi .svn

rm -rf .svn
svn co http://mon.svn/mondepot/ . --force
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.