La importación de configuración para ciertos elementos parece fallar. ¿Cómo puedo solucionar esto?

Aug 17 2020

Después de sincronizar la configuración desde el desarrollo hasta la puesta en escena, esperaría que se importen todos los cambios y que se muestre un mensaje que advierte "No hay cambios de configuración para importar".

La mayoría de los cambios se han importado, pero me quedan seis elementos que parecen haber fallado en la importación. O al menos no borrar de la lista de elementos para importar.

No entiendo por qué la configuración activa parece no ser actualizada por etapas.

Además de importar todo, también intenté importar cada elemento por separado, sin éxito.

Además de utilizar la interfaz de usuario, también he probado drush cim. Drush confirma que la configuración se importó correctamente. Pero si vuelvo a ejecutar drush cim, quedan los mismos 6 archivos.

¿Por qué parece que la importación falla y qué debo hacer para solucionarlo? ¿Mi configuración activa está estropeada de alguna manera?

Una captura de pantalla y un código para ilustrar el problema.

A través de la interfaz de usuario

Vía 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]:
     >

Respuestas

3 sonfd Aug 17 2020 at 20:24

Descubrí que este tipo de cosas se debe a que la configuración en su directorio de sincronización no es del todo legítima. Supongo que esto también es un problema en su entorno de desarrollo y local, no solo en la puesta en escena.

Descubrí que la causa de este problema suele ser el resultado de una de dos cosas:

1. Los archivos de configuración se manipularon manualmente y la configuración en el archivo no es posible.

Un ejemplo, mirando su pastebin, el cambio para core.entity_view_display.node.page.default.yml es eliminar el campo creado de la lista de campos ocultos en esa pantalla. Sin embargo, no hay ninguna configuración sobre cómo se debe mostrar el campo. Un campo no puede no mostrarse ni ocultarse. Para mantener la integridad de la configuración, el sistema predetermina un campo como oculto cuando no está en ninguno de los lugares.

2. Se ejecutaron actualizaciones de la base de datos, actualizaciones que cambian la configuración, pero la configuración no se exportó al entorno de desarrollo después de la actualización.

Un ejemplo, mirando su pastebin, parece que se agregaron algunas opciones de configuración nuevas (con los valores predeterminados apropiados). También parece un módulo cambiado de trabajar con truey falsea 1y 0.

Para resolver este problema:

Primero vaya a su entorno de desarrollo principal. Luego obtenga su última base de datos registrada, borre la caché e impleméntela (actualizaciones de la base de datos, luego importe su configuración). El resultado debería ser el mismo que está viendo en la puesta en escena, es decir, algunas configuraciones parecerán no estar completamente sincronizadas. Esto es de esperar (por las razones descritas anteriormente). A continuación, vuelva a exportar su configuración, confirme y vuelva a implementar.

Para evitar este problema en el futuro:

  1. No manipule los archivos de configuración directamente. Si lo hace, pruebe la configuración localmente para asegurarse de que lo hizo correctamente (esto incluye después de resolver los conflictos de fusión en los archivos de configuración).
  2. Exporte siempre la configuración después de ejecutar las actualizaciones de la base de datos. A veces, las actualizaciones cambian de configuración.