출처: 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
이 솔루션은 저처럼 전체 구성을 내보냈다가 다시 가져올 수는 없지만 사이트에서 "핫" 작업해야 하는 사람들에게 유용합니다.
오류를 일으키는 구성을 찾으려면 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를 실행하면 오류가 해결됩니다!
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3