“ ฐานข้อมูลต้นทางไม่มี Drupal เวอร์ชั่นที่เป็นที่รู้จัก”


9

ฉันได้ติดตั้งไซต์ Drupal สองแห่งในเดสก์ท็อป Ubuntu ในพื้นที่ของฉัน 15.10 Apache2 (2.4.12) สภาพแวดล้อม: หนึ่งคือการติดตั้งใหม่ของ Drupal 8 และที่สองคือสำเนาของไซต์ทำงานที่มีอยู่ที่สร้างขึ้นด้วย Drupal 7 (ซึ่งส่วนใหญ่เป็นโมดูลหลัก อ้างอิงจากความอ่อนน้อมถ่อมตนโดยใช้หน้าเว็บ) เว็บไซต์ทั้งสองทำงานได้ดีไม่มีปัญหาทุกที่

เป้าหมายของฉันคือสิ่งแรกและสำคัญที่สุดในการอัปเกรดไซต์ Drupal 7 เป็น Drupal 8 ฉันทำขั้นตอนเบื้องต้นทั้งหมดเช่นการกำหนดค่าภาษาเดียวกันให้ใช้โมดูลน้อยที่สุด (การถอนการติดตั้งโมดูลใด ๆ ในไซต์ D7 ที่ฉันสามารถนำกลับมาได้อย่างง่ายดาย ) ตรวจสอบให้แน่ใจว่ามีการติดตั้งโมดูลเดียวกันทั้งในเว็บไซต์และอื่น ๆ และตอนนี้ฉันต้องการ "ชนะ" (หวังว่ามันจะเป็นถ้อยคำที่ดี) เว็บไซต์ Drupal 7 ของฉันไปสู่ ​​Drupal 8 อันใหม่

เพื่อให้บรรลุเป้าหมายของฉันฉันได้ติดตั้งโมดูลอัปเกรด Drupalในไซต์ Drupal 8 ของฉันไปที่ localhost / sitename / อัพเกรดและกรอกรายละเอียดทั้งหมดของไซต์ Drupal 7

เมื่อฉันคลิกปุ่ม "ทบทวนการอัพเกรด" ฉันพบข้อผิดพลาด:

ฐานข้อมูลต้นทางไม่มีรุ่น Drupal ที่รู้จัก

ฉันทำข้อผิดพลาดนี้เป็นวลีที่แน่นอน ("ข้อผิดพลาด") และพบผลลัพธ์น้อยมาก ส่วนใหญ่ของพวกเขาดูเหมือนจะต้องมีความรู้การเขียนโปรแกรม PHP ที่ฉันได้รับดังนั้นฉันไม่สามารถตรวจสอบว่าข้อผิดพลาดเกิดจากข้อผิดพลาด (โดยเฉพาะอย่างยิ่งเนื่องจากโมดูลนี้ยังอยู่ภายใต้การพัฒนาหนัก) หรือเนื่องจากความผิดพลาดใน ทำความเข้าใจกับแนวคิด \ ฟังก์ชั่นของโมดูลนี้

  1. มีเหตุผลอะไรที่โมดูลอัพเกรด D8 Drupal จะไม่ "เหมือน" ฐานข้อมูล D7 ที่ฉันให้มา โดยเฉพาะอย่างยิ่งในขณะที่ไซต์ Drupal 7 ทำงานได้ดีทั้งออนไลน์และในประเทศ

  2. การโอนย้ายจะเป็นทางเลือกที่ดีสำหรับการอัปเกรดหรือไม่หากการอัพเกรดไม่สามารถทำได้ด้วยเหตุผลใด ๆ ถ้าเป็นเช่นนั้นทางออกที่ง่ายที่สุดที่คุณสามารถนึกถึงการย้ายถิ่นฐานคืออะไร

ป้อนคำอธิบายรูปภาพที่นี่

ฉันไปที่ /var/www/html/benia/modules/migrate_upgrade/src/MigrationCreationTrait.php และทำ:

-- return $version_string ? substr($version_string, 0, 1) : FALSE;

++ return 7;
++ return $version_string ? substr($version_string, 0, 1) : FALSE;

กว่าได้รับข้อผิดพลาดนี้ที่ด้านบนของหน้าจอ

ป้อนคำอธิบายรูปภาพที่นี่


1
ทั้งหมดที่ฉันเห็นคือมันไม่ชอบฐานข้อมูลที่มีการติดตั้ง Drupal 7 เช่นเดียวกับข้อผิดพลาดที่บอกว่า มีบางอย่างผิดปกติในการกำหนดค่าของคุณหรือคุณไม่ได้นำเข้าที่คุณคาดหวัง
Berdir

ทำไมถึงไม่ชอบ DB ไซต์ D7 ที่มีฐานข้อมูลนี้ทำงานได้ค่อนข้างดีโดยไม่มีการทดสอบ ...

1
โอ้และ @Berdir โดย "การกำหนดค่า" คุณหมายถึงความเชื่อมั่นในโมดูลอัพเกรด Drupal ในไซต์ D8 หรือไม่? ฉันแน่ใจว่าฉันกรอกรายละเอียดทุกอย่างที่ฉันต้องการฉันจะตรวจสอบว่าฉันพลาดอะไรไปหรือเปล่า ... คุณคิดว่าฉันพลาดอะไรไปหรือเปล่า ...

คุณลอง 127.0.0.1 แทน localhost แล้วหรือยัง (ในขณะที่มันอาจจะจริงๆไม่ได้รับผ่านไปยังฐานข้อมูลที่ทั้งหมดที่มีการตั้งค่าการปรับรุ่นปัจจุบันของคุณ)
leymannx

ขออภัยฉันคิดว่าฉันเข้าใจ ... คุณช่วยกรุณาใช้ถ้อยคำใหม่ในสิ่งที่คุณเขียน? ขอบคุณมาก!!!

คำตอบ:


4

ในขั้นตอนนี้ฉันไม่คิดว่าจะมีsimpleตัวเลือกในการอัพเกรดจาก 7 เป็น 8 อย่างที่คุณเห็นในบันทึกประจำรุ่น:

เมื่อคุณพร้อม Drupal 8 core ยังรวมถึงโมดูล Migrate เพื่ออัปเดต Drupal 7 และ 6 ที่มีอยู่ไปยัง Drupal 8 โดยตรง การย้ายข้อมูลถูกทำเครื่องหมายว่า "ทดลอง" ใน Drupal 8.0.0 แต่จะได้รับการสนับสนุนอย่างสมบูรณ์ในรุ่นที่กำลังจะมาถึง https://www.drupal.org/news/drupal-8.0.0-released

เทคนิคเล็กน้อยที่อยู่เบื้องหลัง: จากรุ่น 7 ถึง 8 พวกเขารักษาแนวคิดเดียวกันเมื่อสร้างไซต์ (เช่นโหนดเอนทิตีสิทธิ์การดู ... ) แต่ไม่ใช่แกน ผมจะบอกว่าพวกเขามีการเปลี่ยนแปลงทุกอย่างเพื่อ OOP ส่วนประกอบ Symfony สถาปัตยกรรม ... ดังนั้นไม่มีทางที่จะไม่มีupgradeเว็บไซต์ Drupal ของคุณโดยตรงจากรุ่นที่ดี 8.0 migrateคุณต้อง นี่คือลักษณะของmigratingกระบวนการ:

  1. สร้างไซต์ด้วยฟังก์ชันการทำงานเดียวกันกับไซต์ d7 ของคุณ
  2. สร้างธีมอีกครั้ง (โดยใช้เทมเพลตกิ่งไม้)
  3. ย้ายเนื้อหามากกว่า

ค่าใช้จ่ายสำหรับกระบวนการนี้คือ (น่าเสียดาย) ซึ่งเหมือนกับการสร้างเว็บไซต์ใหม่ขึ้นไป ด้วยหมายเลข 3 ลองดูบทความนี้ตามขั้นตอนที่ 2: https://www.phase2technology.com/blog/upgrading-to-a-drupal-8-site/


ฉันเริ่มสร้างไซต์ที่เขียนใหม่ด้วยตนเองใน Drupal 8 ... มันดีจริงๆที่โมดูลหลายตัวที่ฉันใช้ใน D7 ได้เข้าสู่แกนกลาง ฉันหวังว่าในเวลาที่ฉันจะย้ายไปที่ Drupal 9 เทคโนโลยีการย้ายข้อมูลจะเข้าสู่สถานะที่สามารถทำบางส่วนได้มากขึ้นในบริบทที่แตกต่างกัน Node ข้อมูลในหน้า & ข้อมูลเมตาการเปลี่ยนเส้นทางโหนดไฟล์มุมมอง พาเนลทุกอย่างเป็นของตัวเองให้มากที่สุด ... การแยกกระบวนการไปสู่สเตจที่แตกต่างกัน (เมื่อคุณสามารถเริ่มจากแต่ละสเตจที่เป็นไปได้ทุกครั้งที่คุณต้องการ) เป็นสิ่งที่ฉันหวังว่าจะ ...

ขออภัยที่ไม่สมัคร: ฉันเพิ่งโพสต์คำตอบของฉันด้านล่างพร้อมรายละเอียดเฉพาะเกี่ยวกับสิ่งที่อาจเกิดขึ้นได้โปรดดู แน่นอนว่ารางวัลนั้นอยู่กับคุณแน่นอน

2

ข้อความแสดงข้อผิดพลาดของคุณตรงกับสตริงที่อยู่ในบรรทัดที่http://cgit.drupalcode.org/migrate_upgrade/tree/src/MigrationCreationTrait.php#n40ภายในรหัสของโมดูล "อัพเกรด Drupal" ( https: / /www.drupal.org/project/migrate_upgrade )

มันแสดงให้เห็นว่ามันไม่ใช่ข้อผิดพลาด แต่แทนที่จะเป็น "ข้อยกเว้นถูกโยน" เมื่อดูที่บรรทัดที่มาก่อน 3 บรรทัดของรหัสนั้นฉันคิดว่าเป็นเพียงปัญหาในการตั้งค่าการเชื่อมต่อ

บางทีนี่อาจช่วยได้:

  • อ้างจากปัญหาhttps://www.drupal.org/node/2628440 (ความคิดเห็นที่ nr 3):

    เพื่อตรวจสอบว่าฐานข้อมูลต้นทางเป็นฐานข้อมูล Drupal ที่ถูกต้องและเพื่อตรวจสอบรุ่นของฐานข้อมูลนั้นกระบวนการอัพเกรดจะดูที่ตาราง 'system' - ตารางนั้นมีอยู่ในฐานข้อมูลที่คุณระบุในแบบฟอร์มหรือไม่ การติดตั้ง Drupal ในฐานข้อมูลนั้นนำหน้าอยู่หรือไม่และถ้าเป็นเช่นนั้นคุณป้อนคำนำหน้าในส่วน "ตัวเลือกขั้นสูง" ของแบบฟอร์ม) หรือไม่?

  • ตามด้วยความคิดเห็นที่ 4 ในปัญหาเดียวกันนั้น: "คำนำหน้าตารางให้แก้ปัญหาได้"

และแน่นอนความคิดเห็นจากbenjy (ขอขอบคุณ!) จะช่วยให้ได้รับรายละเอียดเพิ่มเติมเกี่ยวกับข้อผิดพลาดที่เกิดขึ้นจริงเช่น:

คุณสามารถพิมพ์ $ e-> getException () ที่นี่ cgit.drupalcode.org/migrate_upgrade/tree/src/ …จากนั้นคุณจะเห็นข้อผิดพลาด PDO

คุณสามารถ (ชั่วคราว) เพิ่มการพิมพ์ระหว่างบรรทัด 122 และ 123 ในรหัสที่แสดงผ่านลิงค์


ดังที่ฉันได้กล่าวถึงในคำถามฉันไม่มีความรู้เกี่ยวกับ PHP เพื่อทำความเข้าใจว่ามีปัญหาอะไรจากโค้ด PHP อันกว้างใหญ่นั้น ... คุณกรุณาแก้ไขคำถามและอธิบายด้วยคำง่ายๆสิ่งที่จริง ๆ แล้วนี่คือ "การยกเว้นถูกโยนทิ้ง" และอะไรคือ วิธีก้าวเพื่อจัดการกับมัน? โปรดง่ายเท่าที่ฉันทำได้ฉันเพิ่งเริ่มลิ้มรส PHP

@Benos มันก็หมายความว่าบางสิ่งบางอย่างที่อาจเป็นเรื่องเล็กน้อยมากที่มีการกำหนดค่าผิดพลาดในการตั้งค่าการย้ายข้อมูลของคุณ พิมพ์ผิดรหัสผ่านผิด URL ผิด อะไรแบบนั้น.
leymannx

@benos คุณสามารถพิมพ์ $ e-> getException () ที่นี่cgit.drupalcode.org/migrate_upgrade/tree/src/…จากนั้นคุณจะเห็นข้อผิดพลาด PDO
benjy

@leymannx ถ้าฉันได้สร้าง 2 DB ในเครื่อง (หนึ่งสำหรับ D7 หนึ่งสำหรับ D8) เฉพาะหนึ่งใน D7 ควรมีรายละเอียดเหมือนกันคือเว็บไซต์ออนไลน์ที่ฉันต้องการอัพเกรดใช่ไหม?

@leymannx ฉันสร้างทุกสิ่งขึ้นใหม่ ข้อมูล D7 ในเครื่องนั้นเหมือนกันทุกประการในเว็บไซต์ D7 ออนไลน์: โฟลเดอร์ของเว็บไซต์นั้นเหมือนกัน ชื่อฐานข้อมูลและชื่อผู้ใช้เหมือนกันและรหัสผ่านเหมือนกัน ฉันยังเพิ่มคำนำหน้าและแม้ว่าทุกอย่างดูเหมือนว่าจะอยู่ในสถานที่ที่ฉันยังคงได้รับข้อผิดพลาดเดียวกัน

0

ช่วงเวลาที่คุณบังคับให้ codebase ข้ามการอ่าน {system} มันจะตายโดยไม่ค้นหาตารางฐานข้อมูลถัดไป {field_config_instance} มันไม่ได้อ่านฐานข้อมูล D7 ของคุณ บางทีมันอาจพยายามอ่าน D8 บางทีอาจเป็นอย่างอื่นเราจะรู้ได้อย่างไร มากกว่าที่คุณกำลังเข้าสู่การกำหนดค่าฐานข้อมูลที่ไม่ถูกต้อง (กล่าวว่าทั้งสองไซต์อยู่บนเซิร์ฟเวอร์ที่แตกต่างกันโดยที่เซิร์ฟเวอร์ mysql เป็น localhost บนทั้งสอง แต่ localhost ไม่ใช่เซิร์ฟเวอร์เดียวกัน) ฉันเพิ่งตรวจสอบโมดูล Contrib Migrate Upgrade และ Core Migration Module ทั้งสองและมันน่าประหลาดใจอย่างมากหากมีข้อผิดพลาดเกี่ยวกับคำนำหน้าเนื่องจากทั้งคู่จัดการอาร์เรย์การตั้งค่าฐานข้อมูลทั้งหมดไม่ใช่ทีละชิ้น

เป็นไปไม่ได้ที่จะพูดโดยไม่ต้องเข้าถึงอินทราของคุณเกี่ยวกับวิธีแก้ไขปัญหานี้ ขอโทษ ถ้าฉันสามารถฉันจะลงคะแนนเพื่อปิด แต่เนื่องจากมีความโปรดปรานฉันไม่สามารถ เราไม่สามารถช่วยคุณได้และคำถามนี้จะไม่ช่วยคนอื่น ความช่วยเหลือที่เป็นไปได้คือ: อ่านและทำความเข้าใจไฟล์การตั้งค่า Drupal 7 ของคุณและให้ข้อมูลประจำตัวที่ถูกต้องกับโมดูลการโอนย้ายข้อมูล (ความคิดเห็นจำนวนมากแสดงให้เห็นว่าสิ่งนี้กำลังดำเนินไป)

วิธีแก้ปัญหาระยะยาวที่เป็นไปได้อย่างหนึ่งที่อาจรวมถึงฟีเจอร์ในโมดูล contrib ซึ่งผู้ใช้สามารถอัปโหลด settings.php แล้วเราสามารถลองใช้มันได้ นี่มันบอบบางมาก แต่ก็คุ้มค่ากับการยิงที่ฉันเดา เมื่อใครบางคนจะมีเวลารหัสมัน ...

ฉันไม่รู้ว่าทำไมผู้คนถึงสนับสนุนสิ่งนี้อย่างหนัก มีใครอีกบ้างที่มีปัญหาเดียวกัน?


0

เวลาผ่านไปนานมากแล้วตั้งแต่ฉันโพสต์สิ่งนี้ แต่ฉันคิดว่าตอนนี้ฉันรู้ว่าปัญหาคืออะไร:

ฉันเหลือ 2-3 โมดูลที่ติดตั้งไว้ซึ่งฉันคิดว่าเป็น "พื้นฐาน" ดังนั้นฉันจึงมั่นใจว่าพวกเขามีเส้นทางการย้ายข้อมูลเช่นเดียวกับโมดูลหลักทั้งหมด

ถ้าฉันจำได้อย่างถูกต้อง: Metatag และ Redirect (คุณย้ายจาก D7 Globalredirect & Redirect ไปเป็น Redirect ใน Drupal 8)

ไม่เพียง แต่ฉันจะทิ้งสิ่งเหล่านี้ไว้ในไซต์ D7 ฉันยังติดตั้งพวกเขาใน D8 ด้วยดังนั้นจึงไม่มีรุ่นของไซต์ของฉันที่เป็นแบบคอร์เท่านั้นอย่างที่ต้องการ

มันเป็นการโยกย้ายครั้งแรกของฉันและฉันทำผิดพลาดในฐานะนักศึกษาใหม่ทั้งหมดในโครงการ ฉันมั่นใจจริงๆว่า "ไม่สามารถทำได้" ที่โมดูลเหล่านี้จะไม่มีเส้นทางการย้ายข้อมูล (และเมื่อคุณคิดว่ามันควรมี) แต่แล้วฉันก็ค้นพบว่าโดยปกติแล้วโมดูลหลักเท่านั้นที่มีและอะไรก็ตาม อื่นควรมีเส้นทางการย้ายที่กำหนดเองหรือ contrib

เพื่อให้คุณรู้ว่า --- โมดูลเหล่านี้และโมดูลอื่น ๆ มีเส้นทางการย้ายข้อมูลแบบ Contrib ซึ่งคุณสามารถใช้โดยการปะแก้ด้วยพา ธ การย้ายข้อมูลนี้ (คุณ "แทรก" เข้าไปในโมดูลด้วยพา ธ )

อย่างไรก็ตามมันไม่ใช่กรณีของฉันในตอนนั้นและฉันมั่นใจว่ามันมาพร้อมกับระบบ ...

ฉันผิดอย่างเจ็บปวดและนี่ก็เป็นเหตุผลเดียวที่ทำให้การย้ายถิ่นของฉันล้มเหลว ฉันยังเสริมสมมติฐานนี้ด้วยการทดลองขนาดเล็กที่ฉันทำก่อนการโยกย้ายที่ประสบความสำเร็จครั้งล่าสุดของฉันประมาณ 2 เดือนที่ผ่านมา


0

เมื่อฉันได้รับข้อความแสดงข้อผิดพลาด มันกลายเป็น $ db_prefix ที่กำหนดโดยฉัน "drupal_" คุณควรใส่ในตัวเลือกขั้นสูง

ขอแสดงความนับถือ Carlos Aleman

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