Инструмент для очистки базы данных?

Есть ли в Discourse инструмент для очистки базы данных?

Этот инструмент удалял бы любые дополнительные данные конфигурации из базы данных. Он удалял бы добавленные столбцы, строки конфигурации и таблицы, которые отсутствуют в стандартной установке Discourse. Инструмент не затрагивал бы контент и настройки сайта. Основной целью было бы удаление всех компонентов плагинов и тем из базы данных.

Лучшее решение, которое я могу предложить, — это развернуть новый экземпляр из резервной копии :slight_smile:

Это самый чистый способ сохранить данные вашего форума без больших затрат ручного труда.

Однако, я считаю, что резервные копии включают все таблицы, существовавшие в экземпляре, из которого была сделана копия, в том числе созданные плагинами, даже если вы не установили эти плагины на новый экземпляр.

Если вы хотите погрузиться в детали, вы можете использовать задачи rake для удаления базы данных, создания новой и повторного выполнения миграций, но это приведет к удалению всех ваших данных.

Именно поэтому вариант «установить новую среду и восстановить резервную копию» не является лучшим решением. В базе данных всё ещё остаются следы от старых компонентов и плагинов.

Должен существовать инструмент на крайний случай, который удаляет любые изменения в базе данных, внесённые компонентами и плагинами, оставляя данные и настройки сайта без изменений. Этот инструмент можно запускать перед переходом к решению с новой установкой.

Я подозреваю, что это будет сложно реализовать:

  1. некоторые миграции необратимы;
  2. многие миграции хранятся в плагинах, которых не будет, если они не установлены, поэтому нечего откатывать.

Но попробуйте реализовать это и посмотрите, сможете ли вы решить эти проблемы.

То есть у нас вообще нет инструментов для переноса только пользовательского контента, включая категории и теги?

Вы используете термин «миграции». Что вы имеете в виду под этим термином?

Я использую этот термин для обозначения «переноса» данных пользователей и контента в систему. Это никогда не должно изменять структуру базы данных по умолчанию.

Единственное, что может изменить структуру базы данных, — это плагин. Если только Discourse не предоставляет другим способам для людей изменять структуру базы данных.

Они находятся в папке /db/migrations в Discourse и в каждом плагине (которые их используют).