データ移行ツールのトラブルシューティング
この記事では、データ移行ツールの実行時に発生する可能性のあるエラーの解決策を提供します。
説明 description
影響を受ける環境
- Adobe Commerce バージョン 1
- Adobe Commerce バージョン 2
問題/症状
- Source ドキュメント/フィールドがマッピングされていません
- クラスがレコードにマッピングされていません
- 外部キーの制約が失敗する
- URL書き換えの重複
- エンティティの不一致
- Deltalogがインストールされていません
解決策 resolution
Source ドキュメント/フィールドがマッピングされていません
エラーメッセージ
- Source ドキュメントがマッピングされていません:
<EXTENSION_TABLE> - Source フィールドがマッピングされていません。 文書:
<EXTENSION_TABLE>。 フィールド:<EXTENSION_FIELD>
まれに、メッセージでソースではなくDestination documentsまたはDestination fieldsが表示されることがあります。
原因:
一部のAdobe Commerce バージョン 1 エンティティは、ほとんどの場合、拡張機能に属するもので、Adobe Commerce バージョン 2 データベースには存在しません。
このメッセージは、Data Migration Toolが内部テストを実行して、テーブルとフィールドがsource (Adobe Commerce 1)とdestination (Adobe Commerce 2)のデータベース間で一貫性があることを確認するために表示されます。
考えられる解決策
-
対応するAdobe Commerce 2拡張機能をCommerce Marketplaceからインストールします。 競合するデータが独自のデータベース構造要素を追加する拡張機能から発生している場合、同じ拡張機能のAdobe Commerce 2版は、そのような要素を宛先(Adobe Commerce 2)データベースに追加する可能性があり、問題を修正します。
-
ツールの実行時に
-a引数を使用して、エラーを自動解決し、移行が停止するのを防ぎます。 -
問題のあるデータを無視するようにツールを設定します。 データベースエンティティを無視するには、次のように、
map.xmlファイルのエンティティに<ignore>タグを追加します。code language-none ... <source> <document_rules> ... <!-- Ignore `sales_flat_invoice_grid` table --> <ignore> <document>sales_flat_invoice_grid</document> </ignore> <!-- Ignore `address_id` field of `sales_flat_order_address` table --> <ignore> <field>sales_flat_order_address.address_id</field> </ignore> ... </document_rules> </source> ...
警告:
マップファイルまたは-a オプションを使用してエンティティを無視する前に、影響を受けるデータがAdobe Commerce 2 ストアに必要ないことを確認してください。
クラスがレコード にマッピングされていません
エラーメッセージ
クラス <の拡張機能/クラス名>は、レコード <のattribute_id=196>にマッピングされていません
原因:
Adobe Commerce 1 コードベースのクラスは、開発者向けドキュメントのEAV移行手順中にAdobe Commerce 2 コードベースで見つかりませんでした。 ほとんどの場合、欠落しているクラスは拡張機能に属しています。
考えられる解決策
- 対応するAdobe Commerce 2拡張機能をインストールします。
- 問題の原因となる属性を無視します。 このために、
eav-attribute-groups.xml.distファイルのignoreグループに属性を追加します。 class-map.xml.distファイルを使用してクラスマッピングを追加します。
外部キー制約が失敗しました
エラーメッセージのテキスト
ソース データベースで 外部キー< KEY_NAME>制約が失敗しました。 孤立レコード ID : < id_1>、< id_2> (<件のchild_table> .<) field_id>には、<個のparent_table> で参照されているレコードがありません
原因:
child_tableのfield_idが指しているparent_tableにデータベース レコードがありません。
解決策
レコードが必要ない場合は、child_tableからレコードを削除します。
レコードを保持するには、データ移行ツールのconfig.xmlを変更してData Integrity Stepを無効にします。
URLの書き換えに重複があります
There are duplicates in URL rewrites:
Request path: towel.html Store ID: 2 Target path: catalog/product/view/id/10
Request path: towel.html Store ID: 2 Target path: catalog/product/view/id/12
原因:
URL書き換え内のTarget pathは、Request path + Store IDの一意のペアで指定する必要があります。 このエラーは、同じRequest path + Store ID ペアを使用し、2つの異なるTarget path値を持つ2つのエントリを報告します。
解決策
config.xml ファイルでauto_resolve_urlrewrite_duplicates オプションを有効にします。
この設定では、URL書き換えの競合レコードにハッシュ文字列を追加し、コマンドラインインターフェイスに解決結果を表示します。
エンティティの不一致
エラーメッセージ
文書内のエンティティの不一致:< DOCUMENT> Source: < COUNT_ITEMS_IN_SOURCE_TABLE>宛先:< COUNT_ITEMS_IN_DESTINATION_TABLE>
原因:
このエラーは、ボリュームチェック手順の実行中に発生します。 つまり、ドキュメントのAdobe Commerce 2 データベースレコード数は、Adobe Commerce 1と同じではありません。
顧客が移行中に注文を行うと、欠落したレコードが発生します。
解決策
データ移行ツールをDelta モードで実行して、増分変更を転送します。
Deltalogはインストールされていません
エラーメッセージ
< TABLE_NAME>のDeltalogがインストールされていません
原因:
このエラーは、データへの変更の増分移行 (開発者向けドキュメント)中に発生します。 つまり、(プレフィックス m2_cl_*を含む) deltalog テーブルがAdobe Commerce 1 データベースに見つかりませんでした。 これらのテーブルは、data migration (開発者向けドキュメント)の間にインストールされます。また、変更を追跡してdeltalog テーブルを入力するデータベーストリガーもインストールされます。
このエラーの原因の1つは、ライブストア自体からではなく、ライブAdobe Commerce 1 ストアの コピー から移行しようとしていることです。 移行されていないライブ Adobe Commerce 1 ストアからコピーを作成する場合、コピーには差分移行を完了するために必要なトリガーと追加の差分テーブルが含まれていないため、移行は失敗します。 データ移行ツールは、違いを移行するためにAC1とAC2のDBを比較しません。 代わりに、最初の移行時にインストールされたトリガーとdeltalog テーブルを使用して、後続のdelta移行を実行します。 このような場合、ライブ Adobe Commerce 1 DBのコピーには、Data Migration Toolが移行を実行するために使用するトリガーとdeltalog テーブルは含まれません。
解決策
移行の問題を修正するために、Adobe Commerce 1 データベースのコピーから移行プロセスをテストすることをお勧めします。 コピーの問題を修正した後、ライブのAdobe Commerce 1 データベースから移行プロセスを再度開始します。 これにより、移行プロセスをスムーズに進めることができます。