Impor konfigurasi untuk item tertentu tampaknya gagal. Bagaimana cara mengatasinya?

Aug 17 2020

Setelah menyinkronkan konfigurasi dari dev ke staging, saya mengharapkan semua perubahan akan diimpor dan agar pesan ditampilkan, memberi tahu "Tidak ada perubahan konfigurasi untuk diimpor"

Sebagian besar perubahan telah diimpor tetapi saya memiliki enam item yang tampaknya gagal diimpor. Atau setidaknya tidak jelas dari daftar barang yang akan diimpor.

Saya tidak mengerti mengapa konfigurasi aktif tampaknya tidak diperbarui secara bertahap.

Selain mengimpor semua, saya juga mencoba mengimpor setiap item secara terpisah, namun tidak berhasil.

Serta menggunakan UI juga mencoba drush cim. Drush mengonfirmasi bahwa konfigurasi berhasil diimpor. Tetapi jika saya menjalankan drush cim lagi, 6 file yang sama tetap ada.

Mengapa tampaknya impor gagal dan apa yang harus saya lakukan untuk memperbaikinya? Apakah konfigurasi aktif saya kacau balau?

Tangkapan layar dan beberapa kode untuk menggambarkan masalah tersebut.

Melalui UI

Melalui 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]:
     >

Jawaban

3 sonfd Aug 17 2020 at 20:24

Saya menemukan bahwa hal semacam ini terjadi karena konfigurasi di direktori sinkronisasi Anda tidak cukup sah. Dugaan saya adalah bahwa ini juga menjadi masalah pada dev dan lingkungan lokal Anda, bukan hanya pementasan.

Saya menemukan bahwa penyebab masalah ini biasanya disebabkan oleh salah satu dari dua hal berikut:

1. File konfigurasi dimanipulasi secara manual dan konfigurasi di file tidak dimungkinkan.

Contoh, melihat pastebin Anda, perubahan core.entity_view_display.node.page.default.yml adalah menghapus bidang yang dibuat dari daftar bidang tersembunyi pada tampilan itu. Namun, tidak ada konfigurasi tentang bagaimana bidang harus ditampilkan. Bidang tidak bisa tidak ditampilkan dan juga tidak disembunyikan. Untuk menjaga integritas konfigurasi, sistem menetapkan default bidang untuk disembunyikan ketika tidak ada di salah satu tempat.

2. Pembaruan database dijalankan, pembaruan yang mengubah konfigurasi, tetapi konfigurasi tidak diekspor pada lingkungan dev setelah pembaruan.

Contoh, melihat pastebin Anda, sepertinya beberapa opsi konfigurasi baru (dengan nilai default yang sesuai) telah ditambahkan. Ini juga terlihat seperti modul yang diubah dari bekerja dengan truedan falsemenjadi 1dan 0.

Untuk mengatasi masalah ini:

Pertama, buka lingkungan pengembangan utama Anda. Kemudian dapatkan catatan database terbaru Anda, kosongkan cache, dan terapkan (pembaruan database, lalu impor konfigurasi Anda). Hasilnya harus sama dengan yang Anda lihat pada staging, yaitu beberapa konfigurasi akan tampak tidak disinkronkan sepenuhnya. Ini diharapkan (untuk alasan yang dijelaskan di atas). Selanjutnya, ekspor ulang konfigurasi Anda, lakukan, dan terapkan kembali.

Untuk menghindari masalah ini di masa mendatang:

  1. Jangan memanipulasi file konfigurasi secara langsung. Jika Anda melakukannya, uji konfigurasi secara lokal untuk memastikan Anda melakukannya dengan benar (ini termasuk setelah menyelesaikan konflik penggabungan dalam file konfigurasi).
  2. Selalu ekspor konfigurasi setelah menjalankan pembaruan database. Terkadang pembaruan mengubah konfigurasi.