"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Drupal: 데이터베이스에서 고스트 플러그인 제거

Drupal: 데이터베이스에서 고스트 플러그인 제거

2024-08-21에 게시됨
검색:965

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 페이지에서 전체 로그 활성화를 활성화할 수 있습니다. 이 구성을 사용하면 문제가 구성에 있는지 아니면 플러그인 이름이 코드에 하드코딩되어 있는지 파악하는 데 도움이 됩니다.

이제 문제가 구성에 연결된 경우 문제를 해결하는 방법에 대해 설명하겠습니다. 그렇게 하려면 두 가지 가능한 방법이 있습니다.

  • 전체 구성을 내보내고 플러그인 참조를 제거한 후 다시 가져오기
  • DB에 있는 구성에 직접 작업하고 플러그인 제거

전체 구성을 내보내고 다시 가져오기

이 솔루션은 Drupal 커뮤니티에서 권장하는 표준 릴리스 방법을 따르는 경우 가장 많이 사용되는 솔루션 중 하나입니다.
그래픽 인터페이스나 drush config:export 명령을 사용하여 전체 구성을 내보냅니다. 내보내기에서 복구된 파일에서 플러그인 이름으로 전체 텍스트 검색을 수행합니다. 오류를 일으키는 구성 섹션을 제거하고 drush config:import

를 사용하여 구성을 가져옵니다.

DB에 있는 구성에 직접 작용하고 플러그인을 제거함으로써

이 솔루션은 저처럼 전체 구성을 내보냈다가 다시 가져올 수는 없지만 사이트에서 "핫" 작업해야 하는 사람들에게 유용합니다.
오류를 일으키는 구성을 찾으려면 db에서 다음 쿼리를 실행할 수 있습니다.

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

쿼리는 구성 테이블에서 문제가 있는 플러그인을 검색하고 플러그인을 호출하는 구성의 이름을 반환합니다.

구성 이름이 있으면 플러그인 제거를 진행할 수 있습니다.
오류가 발생한 플러그인 및 구성에 따라 제거 방법이 조금씩 변경될 수 있습니다. 이제 다른 경우에도 좋은 출발점이 될 수 있는 예를 고려해 보겠습니다.

전.
잘못된 Drupal 10 업데이트로 인해 filter_image_lazy_load 플러그인에 문제가 발생했습니다.
이전 쿼리에서는 다음 구성을 반환했습니다.

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 config:get filter.format.basic_html 및 drush config:set filter.format.basic_html을 사용하거나 한 번에 drush config:edit filter.format.basic_html

을 사용하여 똑같은 작업을 수행할 수 있습니다.

구성을 정리한 후 Drush Cache:Rebuild를 실행하면 오류가 해결됩니다!

릴리스 선언문 이 글은 https://dev.to/mcale/drupal-rimuovere-un-plugin-fantasma-dal-database-9pj?1에서 복제됩니다.1 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3