Ich habe versucht, eine zu machen, svn cleanup
weil ich die Änderungen in meiner Arbeitskopie nicht festschreiben kann, und ich habe den folgenden Fehler erhalten:
sqllite: Das Image der Datenbankdiskette ist fehlerhaft
Was kann ich jetzt tun?
Ich habe versucht, eine zu machen, svn cleanup
weil ich die Änderungen in meiner Arbeitskopie nicht festschreiben kann, und ich habe den folgenden Fehler erhalten:
sqllite: Das Image der Datenbankdiskette ist fehlerhaft
Was kann ich jetzt tun?
Antworten:
Ich hatte das gleiche Problem. Der folgende Blog-Beitrag hat mir bei der Lösung geholfen: http://www.polak.ro/svn-e200030-sqlite-database-disk-image-is-malformed.html
Sie führen eine Integritätsprüfung für die SQLite-Datenbank durch, die das Repository verfolgt (/.svn/wc.db):
sqlite3 .svn/wc.db "pragma integrity_check"
Das sollte einige Fehler melden.
Dann können Sie sie möglicherweise aufräumen, indem Sie Folgendes tun:
sqlite3 .svn/wc.db "reindex nodes"
sqlite3 .svn/wc.db "reindex pristine"
Wenn danach immer noch Fehler auftreten, haben Sie weiterhin die Möglichkeit, eine neue Kopie des Repositorys in einen temporären Ordner auszuchecken und den .svn-Ordner von der neuen Kopie in den alten zu kopieren. Dann sollte die alte Kopie wieder funktionieren und Sie können den temporären Ordner löschen.
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"
Möglicherweise können Sie den Inhalt der Datenbank, der in eine Sicherungsdatei eingelesen werden kann, sichern und dann wieder in eine neue Datenbankdatei schlürfen:
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;
in COMMIT;
vor dem Doung der .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)
, es gibt jedoch eine Problemumgehung
sqlite3 .svn/wc.db 'PRAGMA user_version;'
die ursprüngliche Datenbank aus, um die richtige Nummer zu erhalten. 2. Führen Sie sqlite3 .svn/wc.db 'PRAGMA user_version = XXX;'
die wiederhergestellte Version mit der richtigen Nummer aus.
Die SVN-Bereinigung hat nicht funktioniert. Der SVN-Ordner auf meinem lokalen System wurde beschädigt. Also habe ich einfach den Ordner gelöscht, einen neuen neu erstellt und von SVN aktualisiert. Das hat das Problem gelöst!
Nach einem Stromausfall stieß ich auf einen fehlerhaften Fehler im Datenbankdatenträger-Image , und der vorgeschlagene Befehl zum erneuten Indizieren von Knoten behebte nicht alle Probleme aufgrund von verletzten Einschränkungen. Auch das unter http://mail-archives.apache.org/mod_mbox/subversion-users/201111.mbox/%3C874nybhpxi.fsf@stat.home.lan%3E beschriebene Verfahren das Problem nicht behoben.
Lösung in meinem Fall:
Dies kann nützlich sein, wenn Ihre ursprüngliche SVN-Kasse viele geänderte oder nicht konvertierte Dateien enthält und Sie nicht zu einer neuen SVN-Kasse wechseln möchten.
Ich habe über den .svn-Ordner aus dem Verzeichnis meines Peer Workers kopiert und das Problem wurde behoben.
Vielleicht könnte eine Lösung sein:
Stellen Sie jetzt erneut eine Verbindung her:
repositorie
: meineSVN
(anderer Fall: Git, etc)repositorie
OrdnerHinweis:
In meinem Fall habe ich eine Sicherungskopie meiner Dateien erstellt. (sicher zurück: P)
Bearbeiten:
Ich spreche über SVN
Plugin auf Eclipse
:)
Hast du diesen Beitrag auf der Subversion-Site gesehen? Sie können möglicherweise auch versuchen, die Datenbank direkt zu validieren und zu "reparieren", wie hier beschrieben . (Beachten Sie, dass ich kein Experte bin. Ich habe nur eine schnelle Google-Suche durchgeführt. Möglicherweise hängt das überhaupt nicht mit Ihren Problemen zusammen.)
Persönlich würde ich versuchen, das Repo erneut zu überprüfen und Ihre Änderungen erneut zu übernehmen. Sie sind sich nicht sicher, ob dies in Ihrem Fall möglich ist?
Während meiner Forschungen habe ich zwei praktikable Lösungen gefunden.
Wenn Sie irgendeine Art von Verbindung verwenden, ssh, samba, mount, trennen / unmounten und wieder verbinden / wieder montieren. Versuchen Sie es noch einmal, dies hat das Problem für mich oft gelöst. Danach können Sie die SVN-Bereinigung durchführen oder einfach normal weiterarbeiten (je nachdem, wann das Problem aufgetreten ist). Ein Neustart meines Computers hat das Problem auch einmal behoben ... ja, ich weiß, es ist dumm!
Manchmal müssen Sie nur Ihre Dateien rm -rf (oder wenn Sie mit dem Begriff nicht vertraut sind, löschen Sie einfach Ihren svn-Ordner) und überprüfen Sie Ihr svn-Repository erneut. Bitte beachten Sie, dass dies das Problem nicht immer löst und Sie möglicherweise auch Änderungen haben, die Sie nicht verlieren möchten. Deshalb benutze ich es als zweite Option.
Hoffe das hilft euch!
Ich habe mein Problem der Beschädigung des visuellen SVN-Servers rep-cache.db gelöst.
Es gibt zwei Lösungen.
Beenden Sie den Visual SVN Server-Dienst.
Laden Sie die sqllite3.exe-Shell von der sqllite-Website herunter und kopieren Sie sie in den Datenbankordner von repo.
Geben Sie die folgenden Befehle an der Eingabeaufforderung in den Datenbankordner des Repos ein.
- Erste Lösung -
sqlite3 rep-cache.db
.clone rep-cache-new.db
Drücken Sie Strg + C, um sqllite zu beenden.
ren rep-cache.db rep-cache-old.db
ren re-cache-new.db rep-cache.db
- 2. Lösung -
Löschen Die Datei rep-cache.db
del rep-cache.db
es wird automatisch erstellt.
Ich habe dies für eine Instanz behoben, die mir passiert ist, indem ich den versteckten .svn-Ordner gelöscht und dann eine Überprüfung des Ordners unter derselben URL durchgeführt habe.
Dadurch wurden keine meiner geänderten Dateien überschrieben und nur alle vorhandenen Dateien versioniert, anstatt neue Kopien vom Server abzurufen.
Verschwenden Sie keine Zeit damit, checking integrity
Daten aus der work queue
Tabelle zu löschen, da dies vorübergehende Lösungen sind und Sie nach einer Weile zurückschlagen werden.
checkout
Machen Sie einfach einen anderen und ersetzen Sie den vorhandenen .svn-Ordner durch den neuen. Mach ein update
und dann sollte es glatt gehen.
Wenn Sie den Tortoise SVN installieren, gehen Sie zum Task-Manager und beenden Sie ihn. Versuchen Sie dann, den Ordner zu löschen. es wird klappen
Die markierte Antwort könnte laut Subversion-Bereinigung die richtige sein. Aber der Fehler ist definitiv ein allgemeiner, der mich hierher geführt hat, diese Fragenseite.
Unser Projekt hat die Abhängigkeit System.Data.SQLite und die Fehlermeldung war dieselbe:
Das Image der Datenbankdiskette ist fehlerhaft
In meinem Fall habe ich das folgende Überprüfungsskript und die folgenden Schritte über SQLiteStudio 3.1.1 ausgeführt .
pragma integrity_check
(Ich habe keine Ahnung, ob diese Statistiken helfen würden, aber ich werde sie trotzdem teilen ...)
Die Datenbankdatei wird 1,5 Jahre lang im täglichen Gebrauch über den Verbindungsjournalmodus im Speicher verwendet und war etwa 750 MB groß. Es gab ungefähr 140.000 Datensätze pro Tabelle und 6 Tabellen waren so groß.
Nach der Ausführung des Integrity Check- Skripts wurden nach 30 Minuten Ausführungszeit 11 Zeilen zurückgegeben.
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...
Alle Ergebnisse betrafen die Indizes. Nach der Neuerstellung der einzelnen Indizes wurde mein Problem behoben.
reindex sqlite_autoindex_MyTableName_1;
reindex MyOtherTableAndOrIndexName_1;
reindex sqlite_autoindex_MyOtherTableAndOrIndexName_2;
Nach der erneuten Indizierung ergab die Integritätsprüfung "OK".
Ich habe diesen Fehler letztes Jahr erhalten und die Datenbank aus dem Backup wiederhergestellt und dann alle Änderungen erneut festgeschrieben, was ein wahrer Albtraum war ...
Ich hoffe, diese Antwort hilft irgendwie.
Keine Notwendigkeit, sich um eine Verzeichnissperre zu kümmern.
Sie müssen lediglich Folgendes tun: Wenn sqllite3 nicht installiert ist, geben Sie den folgenden Befehl ein:
>sudo apt-get install sqlite3
Öffnen Sie die SVN-Datenbank, indem Sie diesen Befehl eingeben.
>sqlite3 .svn/wc.db
Jetzt müssen Sie nur noch Sperreneinträge aus der SVN-Datenbank entfernen.
sqlite> select * from wc_lock; 1|-1 sqlite> delete from wc_lock; sqlite> select * from wc_lock; sqlite> .q
Prozess abgeschlossen. Sie können an Ihrem SVN-Repository arbeiten, Vorgänge ohne Probleme festschreiben, aktualisieren, hinzufügen und entfernen.
:-)
Während der App-Entwicklung stellte ich fest, dass die Nachrichten von den häufigen und massiven INSERT- und UPDATE-Operationen stammen. Stellen Sie sicher, dass Sie mehrere Zeilen oder Daten in einem einzigen Vorgang einfügen und aktualisieren.
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)