ใครมีปัญหานี้
การย้ายข้อมูล> ขั้นตอน EAV
SQLSTATE [23000]: การละเมิดข้อ จำกัด ด้านความซื่อสัตย์: 1062 รายการที่ซ้ำกัน '1-Migration_Default' สำหรับคีย์ 'EAV_ATTRIBUTE_SET_ENTITY_TYPE_ID_ATTRIBUTE_SET_NAME'
ใครมีปัญหานี้
การย้ายข้อมูล> ขั้นตอน EAV
SQLSTATE [23000]: การละเมิดข้อ จำกัด ด้านความซื่อสัตย์: 1062 รายการที่ซ้ำกัน '1-Migration_Default' สำหรับคีย์ 'EAV_ATTRIBUTE_SET_ENTITY_TYPE_ID_ATTRIBUTE_SET_NAME'
คำตอบ:
ข้อผิดพลาดนี้เกิดขึ้นเมื่อเครื่องมือการย้ายข้อมูลล้มเหลวในการถ่ายโอนข้อมูล (เช่นเนื่องจากการละเมิดความสมบูรณ์) โดยไม่ย้อนกลับและจะทำงานอีกครั้ง มันพยายามสร้างแอตทริบิวต์ "Migration_Default" ที่ตั้งค่าและล้มเหลวเนื่องจากมีอยู่แล้วในฐานข้อมูล
สิ่งที่คุณต้องทำคือ:
1) กู้คืนฐานข้อมูล Magento 2.0 ของคุณจากสำเนาที่คุณ (หวังว่า) ทำก่อนเรียกใช้เครื่องมือการย้ายข้อมูล
2) เรียกใช้เครื่องมือย้ายข้อมูลอีกครั้งและตรวจสอบข้อผิดพลาดแรกที่เกิดขึ้น ในกรณีของฉันมันเป็น:
[PDOException]
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'home-1' for key 'URL_REWRITE_REQUEST_PATH_STORE_ID'
3) แก้ไขปัญหา (ฉันต้องลบแถวในฐานข้อมูลด้วยตนเอง)
ทำซ้ำขั้นตอนจนกว่าคุณจะแก้ไขข้อผิดพลาดทั้งหมดและเห็นข้อความที่ทำให้เกิดเสียง:
Migration completed
ฉันพบโซลูชันนี้ที่แก้ไขปัญหานี้ให้ฉัน https://github.com/magento/data-migration-tool/issues/235#issuecomment-321923437
วิธีแก้ไขคือเปลี่ยนชื่อค่าทั้งหมดที่มีชื่อ "Default" ในฟิลด์ "attribute_value_name" ของตาราง eav_attribute_set เป็น "Default_x" ในฐานข้อมูล Magento 1 และเรียกใช้การย้ายข้อมูลจากศูนย์
ในกรณีของฉันมี 9 บันทึกชื่อ "ค่าเริ่มต้น" ดังนั้นฉันจึงเปลี่ยนชื่อเป็น Default_1 เป็น Default_9 และทำงานได้อย่างสมบูรณ์แบบ!
EAV_ATTRIBUTE_GROUP_ATTRIBUTE_SET_ID_ATTRIBUTE_GROUP_CODE
และแก้ไขด้วยวิธีการที่คล้ายกัน:UPDATE eav_attribute_group SET attribute_group_name = CONCAT(attribute_group_name, "_", attribute_set_id) WHERE attribute_group_name = "General";
ในกรณีของฉันมันเกิดขึ้นกับฉันและฉันต้องนำเข้าสำเนาสำรองของฐานข้อมูล magento 2 ของฉันก่อนที่จะโหลดการโยกย้าย
ในกรณีของคุณ : คุณอาจต้องโหลดการย้ายข้อมูลซ้ำอีกครั้ง
เพื่อแก้ไขปัญหานี้
คุณสามารถทำได้ผ่านแอพพลิเคชั่นหรืออินเตอร์เฟซการสืบค้น SQL
DELETE FROM eav_attribute_set WHERE attribute_set_name != 'Default';
ตรวจสอบอีกครั้งด้วย Magento ฐานข้อมูลการโยกย้ายของคุณ 2 บางครั้งเราไม่ได้เปลี่ยนชื่อฐานข้อมูลในเครื่องมือการย้ายข้อมูล
ติดตั้งอินสแตนซ์ Magento ใหม่และเพิ่มชื่อฐานข้อมูลในเครื่องมือการย้ายข้อมูลอย่างถูกต้อง
Data-Migration-Tool ไม่ได้รับข้อมูลจากแหล่งใน utf8
นี่เป็นวิธีแก้ไขปัญหานี้อย่างง่าย ๆ :
แก้ไข: vendor/magento/data-migration-tool/src/Migration/ResourceModel/Adapter/Mysql.php
public function __construct(
\Magento\Framework\DB\Adapter\Pdo\MysqlFactory $adapterFactory,
\Magento\Framework\DB\Ddl\TriggerFactory $triggerFactory,
array $config
) {
$config['initStatements'] = 'SET NAMES utf8'; // +
$configData['config'] = $config;
$this->resourceAdapter = $adapterFactory->create($configData);
$this->setForeignKeyChecks(0);
$this->triggerFactory = $triggerFactory;
}
จากประสบการณ์ของฉันมีการติดตั้งข้อมูลตัวอย่าง ดังนั้นฉันได้ทำตามขั้นตอนต่อไปนี้แล้ว
จากนั้นฉันสามารถโยกย้าย
แก้ไขปัญหาของฉันด้วย sql ต่อไปนี้:
การละเมิดข้อ จำกัด ด้านความสมบูรณ์: 1,062 รายการซ้ำ '4-Images' สำหรับคีย์ - Magento 2
delete from eav_attribute_group WHERE attribute_group_name = 'Images';
ลองทำอะไรซักอย่าง
delete from eav_attribute_group WHERE attribute_group_name = 'Home';