特定のアイテムの構成のインポートが失敗しているようです。これを修正するにはどうすればよいですか?

Aug 17 2020

構成を開発からステージングに同期した後、すべての変更がインポートされ、「インポートする構成の変更はありません」というメッセージが表示されることを期待します。

ほとんどの変更はインポートされましたが、インポートに失敗したように見える6つのアイテムが残っています。または、少なくともインポートするアイテムのリストからクリアしないでください。

アクティブな構成がステージングによって更新されないように見える理由がわかりません。

すべてをインポートするだけでなく、各アイテムを個別にインポートしようとしましたが、成功しませんでした。

UIを使用するだけでなく、drushcimも試しました。Drushは、構成が正常にインポートされたことを確認します。しかし、drush cimを再度実行すると、同じ6つのファイルが残ります。

インポートが失敗しているように見えるのはなぜですか?それを修正するにはどうすればよいですか?アクティブな構成がどういうわけか台無しになっていますか?

問題を説明するためのスクリーンショットといくつかのコード。

UI経由

ダッシュ経由

    [easable]:sync$ drush cim +------------+-----------------------------------------------------+-----------+ | Collection | Config | Operation | +------------+-----------------------------------------------------+-----------+ | | block.block.schoolpwa_subtheme_bottommenu | Update | | | block.block.schoolpwa_subtheme_mainnavigation | Update | | | block.block.mainmenu2 | Update | | | block.block.websiteswitcher | Update | | | core.entity_view_display.node.page.default | Update | | | media_bulk_upload.media_bulk_config.pdf_bulk_upload | Update | +------------+-----------------------------------------------------+-----------+ Import the listed configuration changes? (yes/no) [yes]: > [notice] Synchronized configuration: update block.block.schoolpwa_subtheme_bottommenu. [notice] Synchronized configuration: update block.block.schoolpwa_subtheme_mainnavigation. [notice] Synchronized configuration: update block.block.mainmenu2. [notice] Synchronized configuration: update block.block.websiteswitcher. [notice] Synchronized configuration: update core.entity_view_display.node.page.default. [notice] Synchronized configuration: update media_bulk_upload.media_bulk_config.pdf_bulk_upload. [notice] Finalizing configuration synchronization. [success] The configuration was imported successfully. [easable]:sync$ drush cim
    +------------+-----------------------------------------------------+-----------+
    | Collection | Config                                              | Operation |
    +------------+-----------------------------------------------------+-----------+
    |            | block.block.schoolpwa_subtheme_bottommenu           | Update    |
    |            | block.block.schoolpwa_subtheme_mainnavigation       | Update    |
    |            | block.block.mainmenu2                               | Update    |
    |            | block.block.websiteswitcher                         | Update    |
    |            | core.entity_view_display.node.page.default          | Update    |
    |            | media_bulk_upload.media_bulk_config.pdf_bulk_upload | Update    |
    +------------+-----------------------------------------------------+-----------+

     Import the listed configuration changes? (yes/no) [yes]:
     >

回答

3 sonfd Aug 17 2020 at 20:24

この種のことは、同期ディレクトリの設定が完全​​に正当ではないためであることがわかりました。私の推測では、これはステージングだけでなく、開発環境やローカル環境でも問題になると思います。

この問題の原因は通常、次の2つのいずれかの結果であることがわかりました。

1.構成ファイルは手動で操作されており、ファイル内の構成はできません。

例として、ペーストビンを見ると、core.entity_view_display.node.page.default.ymlの変更は、そのディスプレイの非表示フィールドのリストから作成されたフィールドを削除することです。ただし、フィールドの表示方法に関する構成はありません。フィールドを表示したり、非表示にしたりすることはできません。構成の整合性を維持するために、システムは、フィールドがどちらの場所にもない場合、デフォルトでフィールドを非表示にします。

2.データベースの更新が実行され、構成が変更されましたが、更新後に構成が開発環境にエクスポートされませんでした。

例として、ペーストビンを見ると、いくつかの新しい構成オプション(適切なデフォルト値を使用)が追加されたように見えます。また、モジュールがtrueandfalseから1andに変更されたように見えます0

この問題を解決するには:

まず、プライマリ開発環境に移動します。次に、最新の記録データベースを取得し、キャッシュをクリアして、デプロイします(データベースを更新してから、構成をインポートします)。結果は、ステージングで表示されるものと同じになるはずです。つまり、一部の構成が完全に同期されていないように見えます。これは予想されます(上記の理由により)。次に、構成を再エクスポートし、コミットして、再デプロイします。

将来この問題を回避するには:

  1. 設定ファイルを直接操作しないでください。その場合は、構成をローカルでテストして、正しく構成されていることを確認してください(これには、構成ファイルのマージの競合を解決した後も含まれます)。
  2. データベースの更新を実行した後は、必ず構成をエクスポートしてください。更新によって構成が変更される場合があります。