«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Drupal: удаление плагина-призрака из базы данных

Drupal: удаление плагина-призрака из базы данных

Опубликовано 21 августа 2024 г.
Просматривать:102

Drupal: Rimuovere un plugin fantasma dal database

Источник: https://drupal.stackexchange.com/questions/315921/removing-phantom-plugin-from-database/320215#320215

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

[error]  Drupal\Component\Plugin\Exception\PluginNotFoundException:
         The "name-of-plugin" entity type does not exist.
         in Drupal\Core\Entity\EntityTypeManager->getDefinition()

Включение конфигурации, отображающей все сообщения об ошибках, поможет вам понять, где возникла ошибка и где необходимо предпринять действия.
Вы можете активировать полное включение журнала на странице admin/config/development/logging здесь. Эта конфигурация может помочь вам выяснить, заключается ли проблема в конфигурациях или имя плагина жестко закодировано в вашем коде.

Теперь мы рассмотрим, как решить проблему, если она связана с конфигурациями, и для этого у нас есть два возможных способа:

  • Экспорт всей конфигурации и ее повторный импорт после удаления ссылок на плагины
  • Непосредственное воздействие на конфигурации, присутствующие в базе данных, и удаление плагина

Экспорт всей конфигурации и ее повторный импорт

Это решение, скорее всего, является одним из наиболее часто используемых, если вы следуете стандартной методологии выпуска, рекомендованной сообществом Drupal.
Экспортируйте всю конфигурацию через графический интерфейс или с помощью команды drush config:export. В файлах, восстановленных в результате экспорта, выполните полнотекстовый поиск по названию плагина. Удалите раздел конфигурации, вызывающий ошибку, и импортируйте конфигурацию с помощью drush config:import

Воздействуя непосредственно на конфигурации, присутствующие в базе данных, и удаляя плагин.

Это решение пригодится тем, у кого, как и у меня, нет возможности экспортировать всю конфигурацию и повторно импортировать ее, а работать над сайтом нужно «по горячему».
Чтобы узнать, какие конфигурации вызывают ошибку, вы можете запустить этот запрос к базе данных:

SELECT name FROM config WHERE data LIKE "%name-of-plugin%";

Запрос выполняет поиск в таблице конфигурации плагина-нарушителя и возвращает имена конфигураций, вызывающих плагин.

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

Бывший.
У меня возникла проблема с плагином filter_image_lazy_load из-за плохого обновления Drupal 10.
Предыдущий запрос вернул следующие конфигурации:

filter.format.basic_html
filter.format.full_html
filter.format.restricted_html

С помощью службы config.factory я загрузил конфигурации и проверил, где существует проблема. Затем вы можете приступить к удалению плагина следующим образом:

$configName = 'filter.format.basic_html';
$config = \Drupal::service('config.factory')->getEditable($configName);
$filters = $config->get('filters');
unset($filters['filter_image_lazy_load']);
$config->set('filters', $filters)->save()

Вы можете сделать то же самое с помощью конфигурации drush: get filter.format.basic_html и конфигурации drush: set filter.format.basic_html или одним махом с помощью конфигурации drush: отредактировать filter.format.basic_html

После очистки конфигураций запустите drushcache:rebuild и ошибка должна быть устранена!

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/mcale/drupal-rimuovere-un-plugin-fantasma-dal-database-9pj?1. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3