การกำหนดค่าการนำเข้าสำหรับบางรายการดูเหมือนจะล้มเหลว ฉันจะแก้ไขปัญหานี้ได้อย่างไร

Aug 17 2020

หลังจากซิงโครไนซ์คอนฟิกูเรชันจาก dev เป็น staging ฉันคาดหวังว่าการเปลี่ยนแปลงทั้งหมดจะถูกนำเข้าและสำหรับข้อความที่จะแสดงขึ้นโดยให้คำแนะนำว่า "ไม่มีการเปลี่ยนแปลงการกำหนดค่าที่จะนำเข้า"

นำเข้าการเปลี่ยนแปลงส่วนใหญ่แล้ว แต่ฉันเหลือหกรายการซึ่งดูเหมือนว่าจะนำเข้าไม่สำเร็จ หรืออย่างน้อยก็อย่าล้างออกจากรายการสำหรับการนำเข้า

ฉันไม่เข้าใจว่าทำไมการกำหนดค่าที่ใช้งานอยู่จึงไม่ได้รับการอัปเดตโดยการจัดฉาก

ในการนำเข้าทั้งหมดฉันได้พยายามนำเข้าแต่ละรายการแยกกันโดยไม่ประสบความสำเร็จ

เช่นเดียวกับการใช้ 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

ฉันพบว่าสิ่งนี้เป็นเพราะการกำหนดค่าในไดเรกทอรีการซิงค์ของคุณไม่ถูกต้อง ฉันเดาว่านี่เป็นปัญหาเกี่ยวกับ dev และสภาพแวดล้อมในเครื่องของคุณเช่นกันไม่ใช่แค่การจัดเตรียม

ฉันพบว่าสาเหตุของปัญหานี้มักเกิดจากหนึ่งในสองสิ่ง:

1. ไฟล์การกำหนดค่าถูกจัดการด้วยตนเองและไม่สามารถกำหนดค่าในไฟล์ได้

ตัวอย่างเช่นการดูที่ pastebin ของคุณการเปลี่ยนแปลงสำหรับcore.entity_view_display.node.page.default.ymlคือการลบฟิลด์ที่สร้างขึ้นจากรายการฟิลด์ที่ซ่อนอยู่บนจอแสดงผลนั้น อย่างไรก็ตามไม่มีการกำหนดค่าวิธีการแสดงฟิลด์ ไม่สามารถแสดงฟิลด์และไม่ได้ซ่อน เพื่อรักษาความสมบูรณ์ของการกำหนดค่าระบบจะตั้งค่าฟิลด์เป็นค่าเริ่มต้นเป็นซ่อนเมื่อไม่ได้อยู่ในตำแหน่งใดที่หนึ่ง

2. มีการเรียกใช้การอัปเดตฐานข้อมูลการอัปเดตที่เปลี่ยนแปลงการกำหนดค่า แต่การกำหนดค่าไม่ได้ถูกส่งออกในสภาพแวดล้อมการพัฒนาหลังจากการอัปเดต

ตัวอย่างเมื่อดูที่ Pastebin ของคุณดูเหมือนว่ามีการเพิ่มตัวเลือกการกำหนดค่าใหม่ (พร้อมค่าเริ่มต้นที่เหมาะสม) นอกจากนี้ยังมีลักษณะเช่นโมดูลการเปลี่ยนแปลงจากการทำงานกับtrueและfalseไปและ10

ในการแก้ไขปัญหานี้:

อันดับแรกไปที่สภาพแวดล้อมการพัฒนาหลักของคุณ จากนั้นรับฐานข้อมูลบันทึกล่าสุดของคุณล้างแคชและปรับใช้ (อัปเดตฐานข้อมูลจากนั้นนำเข้าการกำหนดค่าของคุณ) ผลลัพธ์ควรเป็นสิ่งเดียวกับที่คุณเห็นในการจัดเตรียมกล่าวคือการกำหนดค่าบางอย่างดูเหมือนจะไม่ได้รับการซิงค์อย่างสมบูรณ์ สิ่งนี้เป็นสิ่งที่คาดหวัง (ด้วยเหตุผลที่อธิบายไว้ข้างต้น) ถัดไปส่งออกการกำหนดค่าคอมมิตและปรับใช้อีกครั้ง

เพื่อหลีกเลี่ยงปัญหานี้ในอนาคต:

  1. อย่าจัดการไฟล์กำหนดค่าโดยตรง หากคุณทำเช่นนั้นให้ทดสอบการกำหนดค่าในเครื่องเพื่อให้แน่ใจว่าคุณทำถูกต้อง (รวมถึงหลังจากแก้ไขข้อขัดแย้งในการผสานในไฟล์กำหนดค่า)
  2. ส่งออกการกำหนดค่าทุกครั้งหลังจากรันการอัปเดตฐานข้อมูล บางครั้งการอัปเดตจะเปลี่ยนการกำหนดค่า