Comment puis-je supprimer une balise dans la base de données de développement (en local) ?

Suite à la discussion de Restauration manuelle d’une sauvegarde Discourse pour le développement :

Sur ma machine locale, je souhaite supprimer un tag dans la base de données de sauvegarde avant la restauration. Comment puis-je le faire via la console ?

1 « J'aime »

Pour supprimer un tag depuis la console Rails, essayez :

t = Tag.find_by_name('<votre_nom_de_tag>')
t.destroy!

Appeler destroy! au lieu de delete dans la dernière commande permettra de nettoyer tous les enregistrements du site associés au tag supprimé.

3 « J'aime »

Merci pour votre aide :blush:

Est-il possible de supprimer un tag d’une base de données qui n’a pas encore été démarrée ? Par exemple, depuis une sauvegarde qui ne peut pas être restaurée (à cause du problème de tag en double) ?

J’espère que ma question est claire.

Si je devais le faire moi-même, je commencerais par retourner sur le site où le fichier de sauvegarde a été créé, supprimer le tag via la console Rails, puis créer un nouveau fichier de sauvegarde.

Si cela n’est pas possible, ou si cela ne résout pas le problème des tags en double, vous pouvez supprimer la ligne de la table en ouvrant un terminal psql sur celle-ci. Quelque chose comme :

DELETE FROM tags WHERE name = <votre_nom_de_tag>;

Mon inquiétude à ce sujet est que cela ne supprimera pas les utilisations du tag supprimé de la base de données du site de la même manière que lorsque vous utilisez la commande Rails destroy!. Il serait peut-être judicieux de tester cela sur une copie du fichier de sauvegarde pour vous assurer que cela ne casse rien.

Il pourrait aussi être judicieux d’exécuter une instruction SELECT avant de supprimer le tag. Cela pourrait révéler la cause du problème :

SELECT FROM tags WHERE name = <votre_nom_de_tag>;
1 « J'aime »

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.