Продолжая обсуждение из темы Ручное восстановление резервной копии Discourse для разработки:
На локальной машине я хочу удалить тег из базы данных резервной копии перед восстановлением. Как это сделать через консоль?
Продолжая обсуждение из темы Ручное восстановление резервной копии Discourse для разработки:
На локальной машине я хочу удалить тег из базы данных резервной копии перед восстановлением. Как это сделать через консоль?
Чтобы удалить тег из консоли Rails, выполните:
t = Tag.find_by_name('<ваше_имя_тега>')
t.destroy!
Вызов destroy! вместо delete в последней команде удалит все записи на сайте, связанные с удаляемым тегом.
Спасибо за помощь ![]()
Возможно ли удалить тег из базы данных, которая ещё не запускалась? Например, из резервной копии, которую нельзя восстановить (из-за проблемы с дублированием тегов)?
Надеюсь, вопрос понятен.
Если бы я делал это сам, я бы начал с возврата на сайт, где была создана резервная копия, удаления тега через консоль Rails, а затем создания нового файла резервной копии.
Если это невозможно или если это не решает проблему дублирования тегов, вы можете удалить строку из таблицы, открыв терминал psql на сервере. Что-то вроде:
DELETE FROM tags WHERE name = <имя_вашего_тега>;
Моя обеспокоенность по поводу этого заключается в том, что это не удалит упоминания удалённого тега из базы данных сайта так же, как это делается при использовании команды Rails destroy!. Возможно, стоит протестировать это на копии файла резервной копии, чтобы убедиться, что ничего не сломается.
Также может быть хорошей идеей выполнить оператор SELECT перед удалением тега. Это может показать причину проблемы:
SELECT * FROM tags WHERE name = <имя_вашего_тега>;