Próbowałem zrobić, svn cleanup
ponieważ nie mogę zatwierdzić zmian w mojej kopii roboczej i otrzymałem następujący błąd:
sqllite: obraz dysku bazy danych jest uszkodzony
Co mogę teraz zrobić?
Próbowałem zrobić, svn cleanup
ponieważ nie mogę zatwierdzić zmian w mojej kopii roboczej i otrzymałem następujący błąd:
sqllite: obraz dysku bazy danych jest uszkodzony
Co mogę teraz zrobić?
Odpowiedzi:
Miałem ten sam problem. Poniższy wpis na blogu pomógł mi rozwiązać ten problem: http://www.polak.ro/svn-e200030-sqlite-database-disk-image-is-malformed.html
Sprawdzasz integralność bazy danych sqlite, która śledzi repozytorium (/.svn/wc.db):
sqlite3 .svn/wc.db "pragma integrity_check"
To powinno zgłosić pewne błędy.
Następnie możesz je wyczyścić, wykonując:
sqlite3 .svn/wc.db "reindex nodes"
sqlite3 .svn/wc.db "reindex pristine"
Jeśli po tym nadal występują błędy, nadal masz możliwość pobrania świeżej kopii repozytorium do folderu tymczasowego i skopiowania folderu .svn ze świeżej kopii do starej. Następnie stara kopia powinna znów działać i możesz usunąć folder tymczasowy.
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"
Możesz być w stanie zrzucić zawartość bazy danych, którą można odczytać do pliku kopii zapasowej, a następnie przelać ją z powrotem do nowego pliku bazy danych:
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;
na COMMIT;
przed doung .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)
, jednak istnieje obejście tutaj: hanscarpenter.blogspot.com.au/2016/05/…
sqlite3 .svn/wc.db 'PRAGMA user_version;'
względem oryginalnej bazy danych, aby uzyskać poprawną liczbę. 2. działać sqlite3 .svn/wc.db 'PRAGMA user_version = XXX;'
przeciwko przywróconej wersji z poprawnym numerem.
Czyszczenie SVN nie zadziałało. Folder SVN w moim systemie lokalnym został uszkodzony. Dlatego właśnie usunąłem folder, odtworzyłem nowy i zaktualizowałem z SVN. To rozwiązało problem!
Po zaniku zasilania natknąłem się na obraz dysku bazy danych, który jest źle sformułowany, a sugerowane polecenie ponownego zindeksowania węzłów nie rozwiązało wszystkich problemów z powodu naruszonych ograniczeń. Również procedura opisana w http://mail-archives.apache.org/mod_mbox/subversion-users/201111.mbox/%3C874nybhpxi.fsf@stat.home.lan%3E nie rozwiązała problemu.
Rozwiązanie w moim przypadku:
Może to być przydatne, jeśli oryginalne pobranie svn zawiera wiele zmodyfikowanych lub niewersjonowanych plików i nie chcesz przełączać się do nowego pobrania svn.
Skopiowałem folder .svn z katalogu mojego współpracownika i to rozwiązało problem.
Może mogłoby być rozwiązaniem:
Teraz połącz ponownie:
repositorie
: mój SVN
(inny przypadek: git itp.)repositorie
folderUwaga:
W moim przypadku wykonałem kopię zapasową moich plików. (bezpieczne plecy: P)
Edytować:
Mowa o SVN
wtyczce na Eclipse
:)
Widziałeś ten post na stronie Subversion? Możesz także potencjalnie spróbować sprawdzić poprawność i „naprawić” bazę danych bezpośrednio, jak opisano tutaj . (Pamiętaj, że nie jestem ekspertem, właśnie przeprowadziłem szybkie wyszukiwanie w Google. Może w ogóle nie mieć związku z Twoimi problemami).
Osobiście spróbuję ponownie sprawdzić repozytorium i ponownie zastosować zmiany. Nie jesteś pewien, czy jest to możliwe w Twoim przypadku?
W trakcie moich badań znalazłem 2 realne rozwiązania.
Jeśli używasz dowolnego typu połączeń, ssh, samba, montowanie, odłączanie / odmontowywanie i ponowne podłączanie / ponowne podłączanie. Spróbuj ponownie, to często rozwiązało problem. Następnie możesz wyczyścić svn lub po prostu kontynuować normalną pracę (w zależności od tego, kiedy pojawił się problem). Ponowne uruchomienie komputera również rozwiązało problem raz ... tak, to głupie, wiem!
Czasami wszystko, co jest do zrobienia, to rm -rf plików (lub jeśli nie znasz tego terminu, po prostu usuń folder svn) i ponownie sprawdź repozytorium svn. Pamiętaj, że nie zawsze to rozwiązuje problem, a także możesz mieć zmiany, których nie chcesz utracić. Dlatego używam go jako drugiej opcji.
Mam nadzieję, że to wam pomoże!
Rozwiązałem problem z uszkodzeniem rep-cache.db serwera Visual SVN.
Są dwa rozwiązania.
Zatrzymaj usługę Visual SVN Server.
Pobierz powłokę sqllite3.exe z witryny sqllite i skopiuj ją do folderu db repozytorium.
Wpisz następujące polecenia w wierszu polecenia w folderze db repozytorium.
- Pierwsze rozwiązanie -
sqlite3 rep-cache.db
.clone rep-cache-new.db
naciśnij ctrl + c, aby wyjść z sqllite.
ren rep-cache.db rep-cache-old.db
ren re-cache-new.db rep-cache.db
- Drugie rozwiązanie -
Usuń plik rep-cache.db
del rep-cache.db
zostanie utworzony automatycznie.
Naprawiłem to na przykład, gdy mi się to przytrafiło, usuwając ukryty folder .svn, a następnie wyewidencjonowując folder pod tym samym adresem URL.
To nie nadpisało żadnego z moich zmodyfikowanych plików i po prostu zaktualizowało wszystkie istniejące pliki, zamiast pobierać świeże kopie z serwera.
Nie trać czasu na checking integrity
usuwanie danych zwork queue
tabeli, ponieważ są to rozwiązania tymczasowe i po pewnym czasie Cię to odwróci.
Po prostu zrób coś innego checkout
i zastąp istniejący folder .svn nowym. Zrób update
i wtedy wszystko powinno pójść gładko.
Jeśli zainstalujesz SVN Tortoise, przejdź do menedżera zadań i zatrzymaj go. Następnie spróbuj usunąć folder. to będzie działać
Zaznaczona odpowiedź może być poprawna, zgodnie z porządkowaniem subversion. Ale błąd jest zdecydowanie ogólny, który doprowadził mnie tutaj, ta strona z pytaniami.
Nasz projekt ma zależność System.Data.SQLite i komunikat o błędzie był taki sam:
obraz dysku bazy danych jest uszkodzony
W moim przypadku wykonałem następujący skrypt kontrolny i następujące za pośrednictwem SQLiteStudio 3.1.1 .
pragma integrity_check
(Nie mam pojęcia, czy te statystyki pomogłyby, ale i tak się nimi podzielę ...)
Plik DataBase jest używany codziennie przez 1,5 roku w trybie dziennika połączeń w pamięci i miał około 750 MB. W tabeli było około 140 000 rekordów, a 6 tabel było tak dużych.
Po wykonaniu skryptu sprawdzania integralności 11 wierszy zostało zwróconych po 30 minutach wykonywania.
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...
Wszystkie wyniki dotyczyły indeksów. Po ponownym zbudowaniu każdego indeksu mój problem został rozwiązany.
reindex sqlite_autoindex_MyTableName_1;
reindex MyOtherTableAndOrIndexName_1;
reindex sqlite_autoindex_MyOtherTableAndOrIndexName_2;
Po ponownym zindeksowaniu sprawdzenie integralności zakończyło się „OK”.
Mam ten błąd w zeszłym roku i przywrócono mi DB z kopii zapasowej, a następnie ponownie wprowadziłem wszystkie zmiany, co było prawdziwym koszmarem ...
nie musisz się martwić o facetów z blokadą katalogów.
Wystarczy, że jeśli sqllite3 nie jest zainstalowany, wpisz poniższe polecenie,
>sudo apt-get install sqlite3
Otwórz bazę danych SVN, wpisując to polecenie,
>sqlite3 .svn/wc.db
Teraz musisz tylko usunąć wpisy locks z SVN DB.
sqlite> select * from wc_lock;
1|-1
sqlite> delete from wc_lock;
sqlite> select * from wc_lock;
sqlite> .q
Proces zakończony. Możesz pracować na swoim repozytorium SVN, zatwierdzać, aktualizować, dodawać, usuwać operacje bez problemu.
:-)
Podczas tworzenia aplikacji odkryłem, że komunikaty pochodzą z częstych i masowych operacji INSERT i UPDATE. Pamiętaj, aby WSTAWIĆ i AKTUALIZOWAĆ wiele wierszy lub danych w jednej operacji.
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)