>  기사  >  백엔드 개발  >  Drupal: 데이터베이스에서 고스트 플러그인 제거

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

WBOY
WBOY원래의
2024-07-16 13:27:57303검색

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를 실행하면 오류가 해결됩니다!

위 내용은 Drupal: 데이터베이스에서 고스트 플러그인 제거의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.