"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Drupal: eliminar un complemento fantasma de la base de datos

Drupal: eliminar un complemento fantasma de la base de datos

Publicado el 2024-08-21
Navegar:629

Drupal: Rimuovere un plugin fantasma dal database

Fuente: https://drupal.stackexchange.com/questions/315921/removing-phantom-plugin-from-database/320215#320215

Puede suceder que al desinstalar un módulo el procedimiento no se realice en su totalidad o no exista ningún procedimiento de eliminación presente, por esta razón la base de datos queda "sucia".
Normalmente, el error causado al eliminar un complemento por la fuerza es este:

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

Habilitar la configuración que muestra todos los mensajes de error puede ayudarle a comprender dónde está presente el error y dónde se deben tomar medidas.
Puede activar la habilitación de registro completo en la página admin/config/development/logging aquí. Esta configuración puede ayudarle a determinar si el problema son las configuraciones o el nombre del complemento está codificado en su código.

Ahora abordaremos cómo resolver el problema si está vinculado a configuraciones y para hacerlo tenemos dos formas posibles:

  • Exportar toda la configuración y volver a importarla después de eliminar las referencias del complemento
  • Actuar directamente sobre las configuraciones presentes en la base de datos y eliminar el complemento

Exportar toda la configuración y volver a importarla.

Esta solución probablemente esté entre las más utilizadas si sigues la metodología de lanzamiento estándar recomendada por la comunidad Drupal.
Exporte toda la configuración a través de la interfaz gráfica o con el comando drush config:export. En los archivos recuperados de la exportación, realice una búsqueda de texto completo con el nombre del complemento. Elimine la sección de configuración que está causando el error e importe la configuración con drush config:import

Actuando directamente sobre las configuraciones presentes en la base de datos y eliminando el complemento

Esta solución es útil para aquellos que, como yo, no tienen la posibilidad de exportar la configuración completa y volver a importarla pero necesitan trabajar "en caliente" en el sitio.
Para encontrar qué configuraciones están causando el error, puede ejecutar esta consulta en la base de datos:

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

La consulta busca en la tabla de configuración el complemento infractor y devuelve los nombres de las configuraciones que invocan el complemento.

Cuando tengas los nombres de las configuraciones podrás proceder a eliminar el complemento.
Dependiendo del complemento y la configuración errónea, el método de eliminación puede cambiar ligeramente, ahora tomemos en consideración un ejemplo que también puede ser un buen punto de partida para otros casos.

Ex.
Tuve un problema con el complemento filter_image_lazy_load debido a una mala actualización de Drupal 10.
La consulta anterior devolvió estas configuraciones:

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

Con el servicio config.factory cargué las configuraciones y verifiqué dónde existe el problema. Luego puedes proceder a eliminar el complemento de esta manera:

$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()

Puedes hacer exactamente lo mismo con drush config:get filter.format.basic_html y drush config:set filter.format.basic_html o de una sola vez con drush config:edit filter.format.basic_html

Después de limpiar las configuraciones, ejecute un drush cache:rebuild y el error debería resolverse.

Declaración de liberación Este artículo se reproduce en: https://dev.to/mcale/drupal-rimuovere-un-plugin-fantasma-dal-database-9pj?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3