Удаление лишних таблиц(столбцов) из базы данных в Drupal 8.

Столкнулся с проблемой на локальном компьютере в тренировочной версии друпала. Проблема в следующем: при создании пользовательского модуля в базе наплодились лишние поля, которые не удалились окончательно( проблеме, естественно, вызвана кривым кодом самописного модуля). Из-за этого при создании новых полей в любом типе данных выдавалась ошибка, и новые поля не создавались. Переустанавливать друпал ой как не хотелось, поэтому решил поковырять базу данных(в моем случает это SQLite), авось в будущем пригодится.

Проблема не решалась обновлением кэша и выполнением your-domain.com/update.php

1. Специализированные модули.

Первым делом решил подыскать специальные модули для чистки базы(если такие вообще существуют). Нашел следующие: OptimazeDB и DB Maintenance. Но либо эти модули не имеют(пока) версии для Drupal 8 или не работают с SQLite. Вообще не уверен, что вообще существует подобная задача решается с помощью штатных механизмов. Иначе они(эти самые механизмы) уже бы перекочевали в ядро. А скорее всего, уже перекочевали.

2. Работа через Drush.

Далее я попробовал решить проблему с помощью drush. Нагуглил такую команду, которая помогала в ряде аналогичных проблем:

drush entity-updates

В моем случае это не помогло, также как и другие drush- команды:

drush field-update
drush cc
drush cache-rebuild

На данном этапе столкнулся еще с одно проблемой. Хотя Drush идет в комплекте с Drupal при установке через Composer, но запустить команды drush у меня не получалось. Оказалось, что запускать drush нужно из папки /web с вот таким путем: ../vendor/drush/drush/drush your-command .

Дальше я плавно перешел к другому варианту - прямому редактированию базы данных, при этом тоже используя drush:

../vendor/drush/drush/drush sql-cli

По этой команде мы получаем доступ к консоли SQLite с уже подключенной нужной базой сайта.

3. Прямое редактирование базы данных.

Командой

.tables

можно посмотреть все таблицы базы. Нашел названия таблиц с моими "проблемными" полями и удалил их:

DROP TABLE
field_truble;

Выход из консоли SQLite:

.quit

К сожалению, и это мне не помогло восстановить работоспособность. Надеюсь, хоть один из вышеперечисленных способов поможет вам!

Теги