出典: 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 ページで完全なログの有効化をアクティブ化できます。この構成は、問題が構成にあるのか、プラグイン名がコードにハードコーディングされているのかを判断するのに役立ちます。
ここで、問題が設定にリンクされている場合の解決方法について説明します。解決するには 2 つの方法があります。
Drupal コミュニティが推奨する標準的なリリース方法に従う場合、このソリューションはおそらく最もよく使用されるソリューションの 1 つです。
グラフィカル インターフェイスまたは drush config:export コマンドを使用して、設定全体をエクスポートします。エクスポートから復元されたファイルで、プラグイン名を使用して全文検索を実行します。エラーの原因となっている構成セクションを削除し、drush config:import
このソリューションは、私のように、設定全体をエクスポートして再インポートすることはできないが、サイトで「ホット」に作業する必要がある人にとって役立ちます。
エラーの原因となっている構成を見つけるには、データベースに対して次のクエリを実行します:
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 中国語 Web サイトの他の関連記事を参照してください。