web-dev-qa-db-fra.com

svn cleanup: sqlite: l'image du disque de la base de données est mal formée

J'essayais de faire un svn cleanup parce que je ne peux pas valider les modifications dans ma copie de travail et j'ai l'erreur suivante: 

sqllite: l'image du disque de la base de données est mal formée

Cleanup failed to process the following paths

Que puis-je faire maintenant?

85
Rubens Mariuzzo

J'ai eu le même problème. Le billet de blog suivant m'a aidé à le résoudre: http://www.polak.ro/svn-e200030-sqlite-database-database-disk-image-is-malformed.html

Vous effectuez une vérification de l’intégrité de la base de données sqlite qui garde la trace du référentiel (/.svn/wc.db):

sqlite3 .svn/wc.db "pragma integrity_check"

Cela devrait signaler des erreurs.

Ensuite, vous pourrez peut-être les nettoyer en faisant:

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

S'il reste des erreurs après cela, vous avez toujours la possibilité d'extraire une nouvelle copie du référentiel dans un dossier temporaire et de copier le dossier .svn de la nouvelle copie vers l'ancien. Ensuite, l'ancienne copie devrait fonctionner à nouveau et vous pouvez supprimer le dossier temporaire.

88
HenningJ

Vérification de l'intégrité

sqlite3 .svn/wc.db "pragma integrity_check"

Nettoyer

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

Alternativement

Vous pourrez peut-être vider le contenu de la base de données pouvant être lu dans un fichier de sauvegarde, puis le réduire dans un nouveau fichier de base de données:

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
17
matt burns

Le nettoyage de SVN n'a pas fonctionné. Le dossier SVN de mon système local a été corrompu. Je viens donc de supprimer le dossier, d'en recréer un nouveau et de le mettre à jour à partir de SVN. Cela a résolu le problème!

16
EmKay

J'ai copié le dossier .svn à partir du répertoire de mon homologue et le problème a été résolu.

12
user3884070

Après une panne d'électricité, j'ai rencontré l'erreur database disk is is malformed et la commande de nœuds de réindexation suggérée n'a pas résolu tous les problèmes en raison de contraintes violées. La procédure décrite dans http://mail-archives.Apache.org/mod_mbox/Subversion-users/201111.mbox/%[email protected]%3E n'a pas résolu le problème.

Solution dans mon cas:

  • Extraire à nouveau le référentiel svn dans un dossier temporaire
  • Copiez, c’est-à-dire remplacez le fichier ".svn/wc.db" de la nouvelle extraction à la corrompue

Cela peut être utile si votre svn checkout d'origine contient de nombreux fichiers modifiés ou non versionnés et que vous ne voulez pas passer à un nouveau svn checkout. 

12
Thomas853

Peut-être, pourrait être une solution:

  1. clic droit sur le projet
  2. équipe -> déconnecter
  3. Sélectionnez: Supprimer également ...

Maintenant, reconnectez-vous à nouveau:

  1. clic droit sur le projet
  2. équipe -> Partager le projet
  3. sélectionnez votre repositorie: mine SVN (autre cas: git, etc.)
  4. sélectionnez votre dossier repositorie

Remarque:  

Sur mon cas, j'ai fait une sauvegarde de mes fichiers. (bon retour: P)

Modifier:  

Je parle de SVN plugin sur Eclipse :)

2
mfruizs2

J'ai résolu mon problème de corruption visuelle svn serveur rep-cache.db.

Il y a deux solutions.

Arrêtez le service Visual SVN Server.

Téléchargez le shell sqllite3.exe à partir du site Web sqllite et copiez-le dans le dossier db du référentiel.

Tapez les commandes suivantes à la commande Invite dans le dossier db du référentiel.

- Première solution -

sqlite3 rep-cache.db

.clone rep-cache-new.db

appuyez sur ctrl + c pour quitter sqllite.

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

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

- 2ème solution -

Supprimer le rep-cache.db

del rep-cache.db

il sera créé automatiquement.

1

Ne perdez pas votre temps sur checking integrity et ne supprimez pas les données de la table work queue car il s’agit là de solutions temporaires, qui vous répondront dans un instant.

Il suffit de faire une autre checkout et de remplacer le dossier .svn existant par le nouveau. Faites une update et alors cela devrait aller sans heurts. 

1
Jawad Khan

J'ai corrigé cela pour une instance qui m'arrivait en supprimant le dossier caché .svn, puis en effectuant une extraction sur le dossier avec la même URL.

Cela n'a pas écrasé aucun de mes fichiers modifiés, mais simplement mis à jour tous les fichiers existants au lieu de récupérer de nouvelles copies du serveur.

1
David Liljeblad

Au fil de mes recherches, j'ai trouvé 2 solutions viables.

  1. Si vous utilisez n’importe quel type de connexion, ssh, samba, monter, déconnecter/démonter et reconnecter/remonter. Essayez encore, cela a souvent résolu le problème pour moi. Après cela, vous pouvez nettoyer svn ou continuer à travailler normalement (en fonction de la date d'apparition du problème). Le redémarrage de mon ordinateur a également résolu le problème une fois ... oui c'est idiot je sais!

  2. Parfois, tout ce que vous avez à faire est de rm -rf vos fichiers (ou, si vous ne connaissez pas bien le terme, supprimez simplement votre dossier svn), et revérifiez à nouveau votre référentiel svn. Veuillez noter que cela ne résout pas toujours le problème et que vous pouvez également avoir des modifications que vous ne voulez pas perdre. C'est pourquoi je l'utilise comme deuxième option.

J'espère que cela vous aide les gars!

1
Psykehoe
  1. découvrez ce svn à un autre endroit
  2. affiche le fichier .svn caché
  3. remplacer le fichier wc

cela fonctionne pour moi!

1
Kaikai

Avez-vous vu ce post sur le site Subversion? Vous pouvez également potentiellement essayer de valider et de "réparer" directement la base de données comme décrit ici . (Notez que je ne suis pas un expert, je viens de faire une recherche rapide sur Google. Peut-être pas du tout lié à vos problèmes).

Personnellement, j’essayerais de consulter à nouveau le dépôt et de réappliquer vos modifications. Vous ne savez pas si cela est possible dans votre cas?

1
Mightymuke

Si vous installez le SVN Tortoise, accédez au gestionnaire de tâches et arrêtez-le ..__ Ensuite, essayez de supprimer le dossier. ça va marcher

0
Ramesh Babu

pas besoin de s'inquiéter pour un verrou de répertoire les gars.

Il suffit de faire ceci: Si sqllite3 n’est pas installé, tapez la commande ci-dessous,

>Sudo apt-get install sqlite3

Ouvrez la base de données SVN en tapant cette commande,

>sqlite3 .svn/wc.db 

Maintenant, il vous suffit de supprimer les entrées de verrouillage de SVN DB.

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

Processus terminé. Vous pouvez travailler sur votre référentiel SVN, commettre, mettre à jour, ajouter, supprimer des opérations sans problème.

:-)

0
mukesh bhoj