如何在开发数据库(本地)中删除标签?

延续关于 手动恢复 Discourse 备份以用于开发 的讨论:

在我的本地机器上,我想在恢复之前从备份数据库中删除一个标签。如何通过控制台操作?

要从 Rails 控制台删除标签,请尝试:

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

在最后一个命令中使用 destroy! 而不是 delete 将清理网站上与已删除标签关联的所有记录。

谢谢你的帮助 :blush:

是否可以从尚未运行的数据库中删除一个标签?例如,从备份中删除(因为存在重复标签问题而无法恢复)?

希望这个问题表达清楚了。

如果我自己处理这个问题,我会先回到创建备份文件的那个站点,通过 Rails 控制台删除该标签,然后创建一个新的备份文件。

如果这不可行,或者无法解决重复标签问题,您可以通过在该服务器上打开 psql 终端,直接从表中删除该行。例如:

DELETE FROM tags WHERE name = <your_tag_name>;

我对此的担忧是,这种方式不会像使用 Rails 的 destroy! 命令那样,从站点数据库中移除对该已删除标签的所有引用。最好在备份文件的副本上先进行测试,以确保不会破坏任何内容。

在删除标签之前,运行一个 SELECT 语句可能也是个不错的主意。这或许能揭示问题的根源:

SELECT FROM tags WHERE name = <your_tag_name>;