2011-09-15 6 views
3

Je rencontre un problème avec CouchDB 1.1.0. J'ai créé une base de données dans mon ordinateur portable et l'ai répliquée sur mon serveur. Ensuite, j'ai ajouté des pièces jointes à ma base de données locale et les répliquais dans la base de données distante. Sur la deuxième réplication, il semble qu'une erreur est apparue. Les pièces jointes ont été téléchargées correctement, mais je n'ai pas pu les joindre sur les documents.Pièces jointes Ghost dans CouchDB

Si je vérifie la taille de la base de données, ils sont ici. Mais je n'ai aucun moyen de les obtenir et aucun moyen de les supprimer. (Nettoyage de la base de données ne les supprime pas).

Lors de la réplication de la télécommande vers un autre DB, les «pièces jointes fantômes» sont toujours répliquées.

Est-ce que quelqu'un a une idée à ce sujet? Comment pourrais-je supprimer ces pièces jointes?

Répondre

7

Peut-être que vous avez un document conflit. Contrairement à un conflit militaire ou un conflit éthique, un CouchDB conflict est normal et utile, se produisant généralement après la réplication. (Les conflits sont quelque peu similaires à branches dans Git, Mercurial ou Bzr.)

Lors de la réplication, CouchDB reçoit parfois une version alternative du même document. Dans cette situation, au lieu de remplacer une révision par une autre, CouchDB stocke les deux. Malheureusement, lorsque vous interrogez CouchDB pour aller chercher ce document, il doit décider lequel envoyer; et, fondamentalement, il suffit de choisir une révision et l'envoie. En utilisant une requête GET /db/doc_id normale, vous ne réaliserez jamais qu'une révision "alternative" se cache quelque part dans la base de données.

Le lien ci-dessus montre comment trouver et résoudre les conflits (lorsque vous supprimez la révision indésirable, la révision restante sera visible.) L'exemple crucial est la vue de trouver des conflits:

function(doc) { 
    // Map function in a CouchDB view to find conflicts. 
    if(doc._conflicts) { 
    emit(doc._conflicts, null); 
    } 
} 

Si vous interrogez ce point de vue, je pense que vous verrez des conflits. Si la vue renvoie 0 lignes, alors ce n'est pas du tout le problème et nous devrons continuer à penser à votre problème.

0

À droite, j'avais des conflits. Merci Jason

Si quelqu'un a besoin de plus d'informations sur les conflits, juste

http://guide.couchdb.org/draft/conflicts.html

Je viens de créer un petit script de nœud pour obtenir tous les conflits via une vue et les supprimer.

Questions connexes