L'importazione della configurazione per alcuni elementi sembra non riuscire. Come lo risolvo?
Dopo aver sincronizzato la configurazione da dev a staging, mi aspetto che tutte le modifiche vengano importate e venga visualizzato un messaggio che avvisa "Non ci sono modifiche alla configurazione da importare"
La maggior parte delle modifiche sono state importate, ma mi rimangono sei elementi che sembravano aver fallito l'importazione. O almeno non cancellare dall'elenco degli elementi per l'importazione.
Non capisco perché la configurazione attiva sembra non essere aggiornata in fasi.
Oltre a importare tutto, ho anche tentato di importare ogni elemento separatamente, senza successo.
Oltre a utilizzare l'interfaccia utente, ho anche provato drush cim. Drush conferma che la configurazione è stata importata correttamente. Ma se eseguo nuovamente drush cim, rimangono gli stessi 6 file.
Perché sembra che l'importazione non riesca e cosa devo fare per risolverlo? La mia configurazione attiva è in qualche modo incasinata?
Uno screenshot e del codice per illustrare il problema.
Tramite l'interfaccia utente

Via 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]:
>
Risposte
Ho scoperto che questo genere di cose è perché la configurazione nella tua directory di sincronizzazione non è del tutto legittima. La mia ipotesi è che questo sia un problema anche per gli sviluppatori e gli ambienti locali, non solo per la messa in scena.
Ho scoperto che la causa di questo problema è solitamente il risultato di una delle due cose:
1. I file di configurazione sono stati manipolati manualmente e la configurazione nel file non è possibile.
Un esempio, guardando il tuo pastebin, la modifica per core.entity_view_display.node.page.default.yml consiste nel rimuovere il campo creato dall'elenco dei campi nascosti su quel display. Tuttavia, non esiste alcuna configurazione per la modalità di visualizzazione del campo. Un campo non può essere né visualizzato né nascosto. Per mantenere l'integrità della configurazione, il sistema imposta di default un campo nascosto quando non è in nessuna delle due posizioni.
2. Sono stati eseguiti aggiornamenti del database, aggiornamenti che modificano la configurazione, ma la configurazione non è stata esportata nell'ambiente di sviluppo dopo l'aggiornamento.
Un esempio, guardando il tuo pastebin, sembra che siano state aggiunte alcune nuove opzioni di configurazione (con valori predefiniti appropriati). Sembra anche che un modulo sia cambiato dal lavorare con true
e false
a 1
e 0
.
Per risolvere questo problema:
Per prima cosa vai al tuo ambiente di sviluppo principale. Quindi ottenere l'ultimo database di record, svuotare la cache e distribuire (aggiornamenti del database, quindi importare la configurazione). Il risultato dovrebbe essere lo stesso visualizzato durante lo staging, ovvero alcune configurazioni sembreranno non essere completamente sincronizzate. Questo è previsto (per i motivi sopra descritti). Quindi riesportare la configurazione, eseguire il commit e ridistribuire.
Per evitare questo problema in futuro:
- Non manipolare direttamente i file di configurazione. Se lo fai, prova la configurazione localmente per assicurarti di averla corretta (questo include dopo la risoluzione dei conflitti di unione nei file di configurazione).
- Esporta sempre la configurazione dopo aver eseguito gli aggiornamenti del database. A volte gli aggiornamenti cambiano configurazione.