Answers:
当迁移工具在不回滚的情况下无法传输数据(例如,由于完整性违规)而发生并再次运行时,将发生此错误。它尝试创建“ 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
解决方案是将Magento 1数据库中eav_attribute_set表的“ attribute_value_name”字段中包含名称“ Default”的所有值重命名为“ Default_x”,然后从头开始进行迁移。
在我的情况下,有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数据库的备份。
根据您的情况:也许您不得不第二次重新加载数据迁移。
数据迁移工具无法从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;
}