특정 항목에 대한 구성 가져 오기가 실패한 것으로 보입니다. 이 문제를 어떻게 해결합니까?

Aug 17 2020

개발에서 스테이징으로 구성을 동기화 한 후 모든 변경 사항을 가져오고 "가져올 구성 변경 사항이 없습니다"라는 메시지가 표시 될 것으로 예상합니다.

대부분의 변경 사항을 가져 왔지만 가져 오지 못한 것 같은 6 개의 항목이 남아 있습니다. 또는 최소한 가져올 항목 목록에서 지우지 마십시오.

활성 구성이 단계별로 업데이트되지 않는 이유를 이해할 수 없습니다.

모든 항목을 가져 오는 것 외에도 각 항목을 개별적으로 가져 오려고 시도했지만 성공하지 못했습니다.

UI를 사용할뿐만 아니라 drush cim도 시도했습니다. Drush는 구성을 성공적으로 가져 왔음을 확인합니다. 그러나 drush cim을 다시 실행하면 동일한 6 개의 파일이 남습니다.

가져 오기가 실패한 것처럼 보이는 이유는 무엇이며이를 해결하려면 어떻게해야합니까? 내 활성 구성이 어떻게 든 엉망입니까?

문제를 설명하기위한 스크린 샷 및 일부 코드.

UI를 통해

Drush를 통해

    [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

이러한 종류의 것은 동기화 디렉토리의 구성이 합법적이지 않기 때문이라는 것을 알게되었습니다. 제 생각에는 이것이 스테이징뿐만 아니라 개발 및 로컬 환경에서도 문제가되는 것 같습니다.

이 문제의 원인은 일반적으로 다음 두 가지 중 하나의 결과 인 것으로 나타났습니다.

1. 구성 파일이 수동으로 조작되었으며 파일의 구성이 불가능합니다.

예를 들어, pastebin을 살펴보면 core.entity_view_display.node.page.default.yml에 대한 변경 사항은 해당 디스플레이의 숨겨진 필드 목록에서 생성 된 필드를 제거하는 것입니다. 그러나 필드를 표시하는 방법에 대한 구성은 없습니다. 필드는 표시 할 수 없으며 숨길 수도 없습니다. 구성의 무결성을 유지하기 위해 시스템은 두 위치에 있지 않을 때 필드를 숨김으로 기본 설정합니다.

2. 데이터베이스 업데이트가 실행되고 구성을 변경하는 업데이트가 실행되었지만 업데이트 후 개발 환경에서 구성을 내 보내지 않았습니다.

예를 들어, pastebin을 살펴보면 몇 가지 새로운 구성 옵션 (적절한 기본값 포함)이 추가 된 것 같습니다. 또한 작업에서 변경 모듈과 같은 truefalse10.

이 문제를 해결하려면 :

먼저 기본 개발 환경으로 이동하십시오. 그런 다음 최신 레코드 데이터베이스를 가져오고 캐시를 지우고 배포합니다 (데이터베이스 업데이트를 수행 한 다음 구성 가져 오기). 결과는 스테이징에서 보는 것과 동일해야합니다. 즉, 일부 구성이 완전히 동기화되지 않은 것처럼 보입니다. 이것은 예상 된 것입니다 (위에 설명 된 이유 때문에). 다음으로 구성을 다시 내보내고 커밋하고 다시 배포합니다.

앞으로이 문제를 방지하려면 :

  1. 구성 파일을 직접 조작하지 마십시오. 그렇다면 로컬에서 구성을 테스트하여 올바르게 설정되었는지 확인하십시오 (구성 파일에서 병합 충돌을 해결 한 후 포함).
  2. 데이터베이스 업데이트를 실행 한 후에는 항상 구성을 내보내십시오. 때때로 업데이트가 구성을 변경합니다.