จะรีเฟรชการย้ายข้อมูลใหม่ในโมดูลการย้ายข้อมูล Drupal 8 ได้อย่างไร


10

เมื่อเขียนกระบวนการย้ายข้อมูล Drupal 8 ฉันสามารถรีเฟรชกระบวนการย้ายข้อมูลใหม่ได้หากฉันติดตั้งโมดูลโยกย้ายใหม่ drush cr ไม่ทำงาน

คำอธิบาย:

ฉันมีหนึ่งโมดูลคือ: cm_migrationsซึ่งมีการโยกย้าย 2:

  • cm_users
  • cm_tags

ด้วยdrush msฉันเห็น:

Group: beer     Status  Total  Imported  Unprocessed  Last imported       
 cm_users        Idle    3      3         0            2016-02-09 16:56:25 
 cm_tags         Idle    4      0         4                                

ฉันเขียนกระบวนการย้ายใหม่:

  • cm_beers

ฉันรันdrush cr; drush msและฉันเห็นตารางเดียวกันกับก่อนหน้านี้

เมื่อฉันถอนการติดตั้งและติดตั้งcm_migrationsฉันจะเห็นกระบวนการโยกย้ายสามครั้ง:

Group: beer     Status  Total  Imported  Unprocessed  Last imported       
 cm_users        Idle    3      3         0            2016-02-09 16:56:25 
 cm_tags         Idle    4      0         4                          
 cm_beers        Idle    4      0         4              

เบาะแสใด ๆ เกี่ยวกับฉันจะรีเฟรชกระบวนการย้ายข้อมูลโดยไม่ต้องติดตั้งโมดูลอีกครั้งได้อย่างไร

ขอบคุณ


นอกจากนี้ฉันสามารถพูดได้ว่าถ้าฉันดำเนินการกระบวนการโยกย้ายลบเนื้อหาmigrate.migration.cm_beers.ymlและดำเนินการอีกครั้งกระบวนการโยกย้ายไม่ล้มเหลว ดูเหมือนว่าจะถูกแคชเนื้อหาของไฟล์ yaml ไว้ที่ใดที่หนึ่ง
Ignacio Sánchez

คำตอบ:


19

ฉันพบว่ามันใช้งานได้สำหรับฉัน

drush config-import --partial --source = modules / กำหนดเอง / migrate_module / config / ติดตั้ง /


สวัสดีข้างต้นให้ข้อผิดพลาดดังต่อไปนี้: ไม่มีไดเรกทอรีแหล่งที่มา แหล่งที่มาไม่ใช่ไดเรกทอรี
harshal

5

มีโมดูลสำหรับสิ่งนั้น เนื่องจากโดยปกติแล้วไฟล์ yml จะถูกโหลดเมื่อติดตั้งเท่านั้น

โมดูลนี้ช่วยให้คุณสามารถกำหนดไฟล์กำหนดค่าโมดูลที่จะนำเข้าโดยอัตโนมัติ

https://www.drupal.org/project/config_devel

โปรดดูโพสต์บล็อกนี้: https://blog.liip.ch/archive/2016/05/04/using-the-new-drupal-8-migration-api-module.html

พัฒนา Drupal 8 ของคุณเองเพื่อย้ายโมดูลและต่อสู้กับปัญหาแคช

คุณได้เรียนรู้ว่าตอนนี้การแมปการโอนย้ายทั้งหมดจะทำในไฟล์ yaml แต่วิธีการเขียนไฟล์ yaml โยกย้ายของคุณเอง?

น่าเสียดายที่มีข้อผิดพลาดบางประการสำหรับนักพัฒนา Drupal 8 คนใหม่ เนื่องจากอินเตอร์เฟสการจัดการการกำหนดค่า ( https://www.drupal.org/documentation/administer/config ) ของ Drupal 8 ไฟล์ yml ทั้งหมดในไดเรกทอรี“ config / install” จะถูกนำเข้าเมื่อติดตั้งโมดูลเท่านั้น

สิ่งนี้ไม่สามารถทำได้หากคุณต้องการพัฒนาไฟล์กำหนดค่าใหม่ เพื่อที่อยู่นี้โมดูล "การพัฒนาการกำหนดค่า" ( https://www.drupal.org/project/config_devel ) ซึ่งแก้ไขปัญหาการแคชสามารถติดตั้งได้ เป็นไปได้ที่จะนำเข้าไฟล์ yml บางอย่างในทุกคำขอ แต่น่าเสียดายที่คำสั่ง drush ยังไม่รองรับ ดังนั้นเราจำเป็นต้องเพิ่มไฟล์ yaml ทั้งหมดที่เราต้องการนำเข้าสู่ส่วนใหม่ใน module.info.yml ของเรา

config_devel:
 install:
   - migrate_plus.migration.page_node
   - migrate_plus.migration.menu_item
   - migrate_plus.migration_group.liip

จากนั้นเราสามารถเรียกใช้คำสั่งต่อไปนี้หลังจากอัปเดตไฟล์ yml สิ่งนี้จะนำเข้าไฟล์การกำหนดค่าใหม่เข้าไปใน Configuration Management Interface

drush cdi <module_name>
drush cr

ฉันไม่สามารถใช้งานได้และเอกสารขาดหายไป คุณสามารถให้ข้อมูลเพิ่มเติมได้หรือไม่? drupal.org/node/2845304
Michael Mallett

5

การย้ายข้อมูลควรอยู่ในMODULENAME/migrationsไดเรกทอรีย่อย หลังจากแก้ไขการโอนย้ายการกำหนดค่าdrush crพอเพียงอย่างง่ายเพื่อใช้การเปลี่ยนแปลง

ตัวเปลี่ยนการกำหนดค่าจะเปลี่ยนการกำหนดค่าการย้ายข้อมูลกลับเป็นปลั๊กอินการย้ายข้อมูล

ดูบันทึกการเปลี่ยนแปลงนี้: การย้ายข้อมูลเป็นปลั๊กอินแทนเอนทิตีการกำหนดค่า


2

ฉันกำลังดิ้นรนกับปัญหาเดียวกัน: วิธีอัปเดตการกำหนดค่าการย้ายข้อมูลระหว่างการพัฒนา นี่คือสิ่งที่ฉันลงเอยด้วย:

drush cdi1 path-to-config-dir-form-site-root/your-config.yml

config-devel-import-oneคำสั่ง ( cdi1สั้น ๆ ) มีวัตถุประสงค์เพื่อนำเข้าการกำหนดค่าเดียวในการกำหนดค่าที่ใช้งานอยู่ มันเป็นส่วนหนึ่งของโมดูล config_devel ที่กล่าวถึงข้างต้น


1

ฉันไม่ประสบความสำเร็จกับโซลูชันของ FLY ต้องถอนการติดตั้ง migrate_tools ด้วยเพื่อให้รีเฟรช yaml และไม่มีโชคด้วยdevel_configและไม่มีโชคกับ

ฉันพบการกำหนดค่าที่รีเฟรชนี้แล้ว:

$ drush @site_alias pmu mymodule, migrate_tools, migrate_plus -y
$ drush @site_alias en mymodule, migrate_tools, migrate_plus -y

0

ติดตามโซลูชันของ Peter J Lord คุณยังสามารถเพิ่มไดเรกทอรีกำหนดค่า (สำหรับ yml ใหม่หรือที่อัปเดต) ไปยังไฟล์ settings.php ของคุณ เช่น:

$config_directories['fresh'] = 'sites/default/fresh';

วางไฟล์ yml ใหม่ในไดเรกทอรีนั้นแล้วนำเข้าการตั้งค่าใหม่ด้วยคำสั่ง config-import ของ drush:

drush cim fresh --partial 

-1

ฉันพบว่าบางครั้งไม่มีงานใด ๆ ข้างต้น แม้แต่การรวมพวกเขาทั้งหมด อย่างไรก็ตามฉันสามารถหลอกลวง migrate_tools เพื่อให้ฉันมีความเข้าใจ

เห็นได้ชัดว่ามีการตรวจสอบว่าไฟล์ yml ถูกต้องก่อนที่จะได้รับการจดทะเบียน ลองใช้ผู้นำเข้า (ใช่แม้ว่าจะไม่ปรากฏขึ้น$ drush ms)

การย้ายถิ่นของฉันถูกเรียกว่าผลิตภัณฑ์ดังนั้นฉันจึง: $ drush mim products

Migration failed with source plugin exception: The &quot;int&quot; plugin does not exist.

แก้ไขข้อผิดพลาดนี้ (เปลี่ยน int เป็นจำนวนเต็มในกรณีของฉัน) จากนั้นทำตามคำตอบของ @FLY ด้านบนทำให้การย้ายข้อมูลปรากฏขึ้น อัปยศข้อผิดพลาดไม่ปรากฏขึ้นและมันก็ล้มเหลวอย่างเงียบ ๆ แต่นั่นเป็นหัวข้ออื่น ;-)

ป.ล. ฉันจะโพสต์สิ่งนี้เป็นความคิดเห็น แต่ฉันยังมีคะแนนไม่เพียงพอ


-2

ในคำตอบโดยFLYข้างต้นในขณะนี้ควรจะเป็นdrush cdi <module_name>drush cde <module_name>


2
drush cde ส่งออกการกำหนดค่าและเขียนทับสิ่งที่คุณมี นั่นไม่ใช่สิ่งที่เราต้องการ สิ่งนี้ยอมรับได้อย่างไร?
Michael Mallett
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.