Stavo cercando di eseguire un'operazione svn cleanup
perché non riesco a salvare le modifiche nella mia copia di lavoro e ho ricevuto il seguente errore:
sqllite: l'immagine del disco del database non è valida
Cosa posso fare adesso?
Stavo cercando di eseguire un'operazione svn cleanup
perché non riesco a salvare le modifiche nella mia copia di lavoro e ho ricevuto il seguente errore:
sqllite: l'immagine del disco del database non è valida
Cosa posso fare adesso?
Risposte:
Ho avuto lo stesso problema. Il seguente post sul blog mi ha aiutato a risolverlo: http://www.polak.ro/svn-e200030-sqlite-database-disk-image-is-malformed.html
Esegui un controllo di integrità sul database sqlite che tiene traccia del repository (/.svn/wc.db):
sqlite3 .svn/wc.db "pragma integrity_check"
Questo dovrebbe riportare alcuni errori.
Quindi potresti essere in grado di ripulirli facendo:
sqlite3 .svn/wc.db "reindex nodes"
sqlite3 .svn/wc.db "reindex pristine"
Se ci sono ancora errori dopo di che, hai ancora la possibilità di estrarre una nuova copia del repository in una cartella temporanea e copiare la cartella .svn dalla nuova copia a quella vecchia. Quindi la vecchia copia dovrebbe funzionare di nuovo ed è possibile eliminare la cartella temporanea.
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"
Potresti essere in grado di scaricare il contenuto del database che può essere letto in un file di backup, quindi rimpiazzarlo in un nuovo file di database:
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;
prima di eseguire il .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)
, tuttavia c'è una soluzione alternativa qui: hanscarpenter.blogspot.com.au/2016/05/…
sqlite3 .svn/wc.db 'PRAGMA user_version;'
sul database originale per ottenere il numero corretto. 2. eseguire sqlite3 .svn/wc.db 'PRAGMA user_version = XXX;'
sulla versione ripristinata con il numero corretto.
La pulizia SVN non ha funzionato. La cartella SVN sul mio sistema locale è stata danneggiata. Quindi ho appena cancellato la cartella, ricreato una nuova e aggiornato da SVN. Questo ha risolto il problema!
Dopo un blackout di corrente, mi sono imbattuto nell'immagine del disco del database che è un errore non valido e il comando suggerito di reindicizzazione dei nodi non ha risolto tutti i problemi a causa di vincoli violati. Anche la procedura descritta in http://mail-archives.apache.org/mod_mbox/subversion-users/201111.mbox/%3C874nybhpxi.fsf@stat.home.lan%3E non ha risolto il problema.
Soluzione nel mio caso:
Questo può essere utile se il tuo checkout svn originale contiene molti file modificati o senza versione e non vuoi passare a un nuovo checkout svn.
Ho copiato la cartella .svn dalla directory del mio collega e questo ha risolto il problema.
Forse, potrebbe essere una soluzione:
Ora, ricollegati di nuovo:
repositorie
: mio SVN
(altro caso: git, ecc.)repositorie
cartellaNota:
Nel mio caso, ho eseguito un backup dei miei file. (sicuro di ritorno: P)
Modificare:
Sto parlando di SVN
plugin su Eclipse
:)
Hai visto questo post sul sito di subversion? Potresti anche provare a convalidare e "correggere" il database direttamente come descritto qui . (Nota che non sono un esperto, ho solo fatto una rapida ricerca su Google. Potrebbe non essere affatto correlato ai tuoi problemi).
Personalmente, proverei di nuovo a controllare il repository e ad applicare nuovamente le modifiche. Non sei sicuro che ciò sia possibile nel tuo caso?
Durante le mie ricerche, ho trovato 2 soluzioni praticabili.
Se stai usando qualsiasi tipo di connessione, ssh, samba, montaggio, scollegamento / smontaggio e ricollegamento / rimontaggio. Riprova, questo spesso ha risolto il problema per me. Dopodiché puoi eseguire la pulizia svn o continuare a lavorare normalmente (a seconda di quando è apparso il problema). Il riavvio del computer ha anche risolto il problema una volta ... sì, è stupido lo so!
Alcune volte tutto ciò che devi fare è rm -rf i tuoi file (o se non hai familiarità con il termine, elimina la cartella svn) e ricontrolla il tuo repository svn ancora una volta. Tieni presente che questo non risolve sempre il problema e potresti anche avere modifiche che non vuoi perdere. Ecco perché lo uso come seconda opzione.
Spero che questo vi aiuti ragazzi!
Ho risolto il mio problema di danneggiamento di rep-cache.db del server svn visivo.
Le loro sono due soluzioni.
Arrestare il servizio Visual SVN Server.
Scarica la shell sqllite3.exe dal sito Web sqllite e copiala nella cartella db del repository.
Digita i seguenti comandi al prompt dei comandi nella cartella db del repository.
- Prima soluzione -
sqlite3 rep-cache.db
.clone rep-cache-new.db
premere ctrl + c per uscire da sqllite.
ren rep-cache.db rep-cache-old.db
ren re-cache-new.db rep-cache.db
- Seconda soluzione -
Elimina Il rep-cache.db
del rep-cache.db
verrà creato automaticamente.
Ho risolto il problema per un'istanza in cui mi stava accadendo eliminando la cartella .svn nascosta e quindi eseguendo un checkout sulla cartella con lo stesso URL.
Questo non ha sovrascritto nessuno dei miei file modificati e ha semplicemente aggiornato tutti i file esistenti invece di prendere nuove copie dal server.
Non sprecare il tuo tempo checking integrity
o eliminare i dati dalla work queue
tabella perché queste sono soluzioni temporanee e ti ricambieranno dopo un po '.
Basta farne un altro checkout
e sostituire la cartella .svn esistente con quella nuova. Fai un update
e poi dovrebbe andare liscio.
Se installi Tortoise SVN, vai al task manager e interrompilo. Quindi prova a eliminare la cartella. Funzionerà
La risposta contrassegnata potrebbe essere quella corretta, secondo la pulizia di subversion. Ma l'errore è sicuramente generico, che mi ha portato qui, questa pagina delle domande.
Il nostro progetto ha la dipendenza System.Data.SQLite e il messaggio di errore era lo stesso:
l'immagine del disco del database non è valida
Nel mio caso, ho eseguito il seguente script di controllo e quanto segue tramite SQLiteStudio 3.1.1 .
pragma integrity_check
(Non ho idea se queste statistiche aiuterebbero, ma le condividerò comunque ...)
Il file DataBase viene utilizzato nell'uso quotidiano per 1,5 anni, tramite la modalità journal di connessione su Memory, ed era grande circa 750 MB. C'erano circa 140.000 record per tabella e 6 tabelle erano così grandi.
Dopo l'esecuzione dello script Controllo integrità , sono state restituite 11 righe dopo 30 minuti di tempo di esecuzione.
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...
Tutti i risultati riguardavano gli indici. Dopo aver ricostruito ogni indice, il mio problema è stato risolto.
reindex sqlite_autoindex_MyTableName_1;
reindex MyOtherTableAndOrIndexName_1;
reindex sqlite_autoindex_MyOtherTableAndOrIndexName_2;
Dopo la reindicizzazione, il controllo dell'integrità è risultato "ok".
Ho ricevuto questo errore l'anno scorso e ho ripristinato il DB dal backup, quindi ho reimpegnato tutte le modifiche, il che è stato un vero incubo ...
non c'è bisogno di preoccuparsi per un blocco di directory ragazzi.
Quello che devi fare è, se sqllite3 non è installato, digita sotto il comando,
>sudo apt-get install sqlite3
Apri il database SVN digitando questo comando,
>sqlite3 .svn/wc.db
Ora non ti resta che rimuovere le voci di blocco da SVN DB.
sqlite> select * from wc_lock; 1|-1 sqlite> delete from wc_lock; sqlite> select * from wc_lock; sqlite> .q
Processo completato. Puoi lavorare sul tuo repository SVN, eseguire commit, aggiornare, aggiungere, rimuovere operazioni senza problemi.
:-)
Durante lo sviluppo dell'app ho scoperto che i messaggi provengono dalle frequenti e massicce operazioni di INSERT e UPDATE. Assicurati di INSERIRE e AGGIORNARE più righe o dati in un'unica operazione.
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)