データ移行Eavステップエラー


回答:


4

このエラーは、移行ツールが(整合性違反などにより)ロールバックせずにデータの転送に失敗し、再度実行された場合に発生します。「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)問題を修正します(DBの行を手動で削除する必要がありました)。

すべてのエラーをクリアし、甘い音のメッセージが表示されるまで、手順を繰り返します。

Migration completed

同じ問題に直面していますが、この値はどこで変更できますか?
Purushotam Sharma

1
どの値?整合性制約違反の原因となっているDB行を削除するにはどうすればよいですか?インデックス名を見てください。私の場合は「URL_REWRITE_REQUEST_PATH_STORE_ID」でした。その最初の部分は、問題のレコードがあるテーブルの名前です。私の場合、それはurl_rewrite(より正確にはmy-prefix_url_rewrite)でした。REQUEST_PATHとSTORE_IDは2つの列であり、まとめると一意である必要があります。私の場合、移行ツールはrequest_pathの下に「home」、store_idの下に1つのレコードを2つ挿入しようとしていました。最初のものを取り除かなければならなかった。
Mateusz

@Mateusz、コマンドを使用すると、-rそれはdbをリセットせず、最初から開始しますか?dbを復元するたびにプロセスに時間がかかりすぎる
jafar pinjar

@jafarpinjar(またはこれを見ている人)はい、それは正しいです。毎回データベースを復元する必要があります。Magento 2のドキュメントから:「データ移行ツールを最初から強制的に実行するには、-reset引数を使用します。その場合、以前に移行したデータが重複しないように、Magento 2データベースダンプを復元することをお勧めします。」
WackGet

@Mateusz、私はこのエラーがあります、「整合性制約違反:1062キー 'WISHLIST_CUSTOMER_ID'のエントリ '0'が重複しています」
jafar pinjar

2

この問題を解決するこのソリューションを見つけました https://github.com/magento/data-migration-tool/issues/235#issuecomment-321923437

解決策は、eav_attribute_setテーブルの「attribute_value_name」フィールドに「Default」という名前を含むすべての値の名前を変更し、Magento 1データベースで「Default_x」に変更して、移行を最初から実行することです。

私の場合、「Default」という名前の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";
WackGet

@Alfredo Lanzetta、私はM2に正常に移行しましたが、カスタムレイアウトオプションに問題があるようです。同じことについてあなたの洞察をお願いします。私の質問を見てください。
CodeForGood

1

私の場合:私に起こりました。移行をリロードする前に、magento 2データベースのバックアップをインポートする必要がありました。

あなたの場合:多分あなたはもう一度データ移行をリロードしなければならなかったでしょう。


こんにちは@ Kevin、resetコマンドは設定をリセットしませんか?最初から始まらないの?毎回dbをリセットする必要がありますか?
jafar pinjar

@jafarpinjar(またはこれを見ている人)はい、それは正しいです。毎回データベースを復元する必要があります。Magento 2のドキュメントから:「データ移行ツールを最初から強制的に実行するには、-reset引数を使用します。その場合、以前に移行したデータが重複しないように、Magento 2データベースダンプを復元することをお勧めします。」
WackGet

1

この問題を修正するには、

  1. まず、移行済みの属性セットを確認する必要があります。
  2. 次に、デフォルト以外の属性セットを削除します。

SQLクエリアプリケーションまたはインターフェイスを介してそれを行うことができます。

DELETE FROM eav_attribute_set WHERE attribute_set_name != 'Default';

1

移行するデータベースMagento 2を再確認してください。データ移行ツールでデータベース名を変更していない場合があります。

新しいMagentoインスタンスを再インストールし、データ移行ツールにデータベース名を正しく追加します


0

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;
}

GitHub


これが主キーの複製に影響を与える理由を説明できますか?
ダムダムブロージア

0

私の経験では、サンプルデータがインストールされています。だから、私は次の手順を実行しました。

  1. データベースを削除しました
  2. 次に、サンプルデータなしでmagento 2を再インストールします。

その後、移行できます。


0

次のSQLに関する私の問題を修正しました:

整合性制約違反:1062キーの重複エントリ '4-Images' – Magento 2

delete from eav_attribute_group WHERE attribute_group_name = 'Images';

だから何かを試してみてください

delete from eav_attribute_group WHERE attribute_group_name = 'Home';
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.