プラグイン > バグ報告・利用に関する質問 > データ移行プラグイン(4.2系)でデータが完全に移行されない |
バグ報告・利用に関する質問
スレッド表示 | 古いものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
nakamori |
投稿日時: 2024/2/20 8:13
対応状況: −−−
|
常連 登録日: 2018/4/25 居住地: 投稿: 33 |
Re: データ移行プラグイン(4.2系)でデータが完全に移行されない 移行プラグインでデータが消える件、無事解決いたしましたのでご報告いたします。
tattsuさまのアドバイスに従い、ConfigController.phpの該当箇所を $value[$column] = mt_rand(); から $value[$column] = isset($data[$column]) ? $data[$column] : mt_rand(); に変更したところ、全件データが入るようになりました。 ご報告とお礼を申し上げます。 |
nakamori |
投稿日時: 2024/2/19 13:36
対応状況: −−−
|
常連 登録日: 2018/4/25 居住地: 投稿: 33 |
Re: データ移行プラグイン(4.2系)でデータが完全に移行されない ありがとうございます。
クエリーログを確認したところ、secret_keyが重複しているレコードが消えていました! 毎回ランダムに消えていたのも納得です。 ECCUBE3のsecret_keyを変えずに使用する方向で試してみようと思います。 取り急ぎ御礼のみにて失礼いたします。 |
tattsu |
投稿日時: 2024/2/19 9:49
対応状況: −−−
|
長老 登録日: 2023/12/23 居住地: 投稿: 225 |
Re: データ移行プラグイン(4.2系)でデータが完全に移行されない 実行されるSQLで、secret_keyの値が重複になっていませんか?
コード確認したところ、移行プラグインで、secret_keyにmt_rand関数が使われているようです。 (mt_randはユニークにならない場合があるので、これが原因なら実行ごとに結果が違うこと説明できます) https://github.com/EC-CUBE/data-migration-plugin/blob/4.2/Controller/Admin/ConfigController.php#L403-L404 もし重複しているようなら、商品画像のファイル名のようにもっと重複しない文字列を作るように修正するか、 そもそも3系にも「secret_key」があるので、そのまま使うほうがよさそうですよね。 検証してないですが、 $value[$column] = mt_rand();ではなく、 $value[$column] = isset($data[$column]) ? $data[$column] : mt_rand(); にするとある程度改善されるでしょうか・・。 また、dtb_customerに関してはですが、先に一回テーブルを空にしていたはずなので、おそらくREPLACE INTOではなくてINSERT INTOに直しても良い気がします。
|
nakamori |
投稿日時: 2024/2/17 7:26
対応状況: −−−
|
常連 登録日: 2018/4/25 居住地: 投稿: 33 |
Re: データ移行プラグイン(4.2系)でデータが完全に移行されない ありがとうございます。
投入失敗や外部キー関連のエラーログは確認できませんでした。 SHOW CREATE TABLEの結果は以下のようになってますが、ここから何かわかることはありますでしょうか。
|
tattsu |
投稿日時: 2024/2/16 8:46
対応状況: −−−
|
長老 登録日: 2023/12/23 居住地: 投稿: 225 |
Re: データ移行プラグイン(4.2系)でデータが完全に移行されない 上でも書かせていただきましたが、何かのカラムについているユニークキー制約にひっかかっていないでしょうか?
|
nakamori |
投稿日時: 2024/2/16 8:19
対応状況: −−−
|
常連 登録日: 2018/4/25 居住地: 投稿: 33 |
Re: データ移行プラグイン(4.2系)でデータが完全に移行されない > クエリーログにDELETEされていそうな箇所はなかったということでしょうか?
> 投入失敗や外部キー関連のエラーログが出ていないでしょうか? 投入失敗等のログは出ていないように見えます。 処理直後、画面を見ずにMySQLのデータを確認した時も既にデータが抜け落ちている状態でした。 試しに抜け落ちたID(id:60455)のデータをクエリーログから抽出し、同じクエリーを手動で投げてみたところ、id:60455のデータは入りましたが、代わりにid:78231が消えるという結果になりました。 そこでid:78231を入れると今度はid:60455が消え、1件入れば1件削除されます。 2つのデータに共通性は見られません。 気になるのはクエリ実行後の出力が MariaDB [dev_cube]> REPLACE INTO dtb_customer (id, customer_status_id, sex_id, job_id, country_id, pref_id, name01, name02, kana01, kana02, company_name, postal_code, addr01, addr02, email, phone_number, birth, password, salt, secret_key, first_buy_date, last_buy_date, buy_times, buy_total, note, reset_key, reset_expire, point, create_date, update_date, discriminator_type, customer_rank_id, plg_mailmagazine_flg, check_date) -> VALUES ('60455', '2', '1', '9', NULL, '12', '氏', '名', 'シ', 'メイ', '*****', '*****', '*****', '***-**', '**********', '090********', '生年月日', '****', '****', '****', 'yyyy-mm-dd hh:mm:ss', 'yyyy-mm-dd hh:mm:ss', '1', '****', NULL, NULL, NULL, '0', 'yyyy-mm-dd hh:mm:ss', 'yyyy-mm-dd hh:mm:ss', 'customer', NULL, '0', NULL); Query OK, 2 rows affected (0.005 sec) となっており、1つのクエリで2つのデータがaffectedされています。 MySQLの設定で見直すところなどありますでしょうか? 何度もお手数ですが、よろしくお願いいたします。 |
tattsu |
投稿日時: 2024/2/15 12:20
対応状況: −−−
|
長老 登録日: 2023/12/23 居住地: 投稿: 225 |
Re: データ移行プラグイン(4.2系)でデータが完全に移行されない クエリーログにDELETEされていそうな箇所はなかったということでしょうか?
投入失敗や外部キー関連のエラーログが出ていないでしょうか? REPLACEはユニークキーが重複した場合でもDELETE & INSERTですのであやしい気はします。 上で移行データに問題がある可能性と書いたのは、移行元ではユニークキーがなかったが移行先でユニークキーがあってREPACEされていることを想定したのですが、毎回結果が違うことは説明が難しそうです。 また、実行が終わった際は全量登録されていて、画面にアクセスすると消えるなどということもサイトの状況によっては考えられなくはないです。 REPLACEを実行するたびに、その時点で想定される数のレコードが入っているかSELECTして確認してみるのはどうでしょうか。
|
nakamori |
投稿日時: 2024/2/15 9:59
対応状況: −−−
|
常連 登録日: 2018/4/25 居住地: 投稿: 33 |
Re: データ移行プラグイン(4.2系)でデータが完全に移行されない ありがとうございます。
移行データに問題があれば毎回失敗すると思うのですが、何度か試行すると全部入ることもあるのが不思議です(毎回同じデータを使用しています)。 クエリーログを確認してみましたが、20件ずつREPLACE文で投入しているようで、その中に抜け落ちた顧客IDのデータも入っていました。 REPLACE INTO dtb_customer (id, customer_status_id, sex_id, job_id, country_id, pref_id, name01, name02, kana01, kana02, company_name, postal_code, addr01, addr02, email, phone_number, birth, password, salt, secret_key, first_buy_date, last_buy_date, buy_times, buy_total, note, reset_key, reset_expire, point, create_date, update_date, discriminator_type, customer_rank_id, plg_mailmagazine_flg, check_date) VALUES ( 20件分の顧客データ ) REPLACEに失敗することってあるのでしょうか。 または、この時点でデータは投入されていて、その後の処理で抜け落ちる可能性もあるのでしょうか。 他に調べる方法があればご教授いただければと思います。 |
tattsu |
投稿日時: 2024/2/15 8:41
対応状況: −−−
|
長老 登録日: 2023/12/23 居住地: 投稿: 225 |
Re: データ移行プラグイン(4.2系)でデータが完全に移行されない デバッグしてみないことには分からないですね・・。
移行実行時のエラーなのか(MariaDBでエラー出ていないか) 移行後に何らかの理由で消えているのか 移行データに問題があるのか そのあたりの切り分けからになるのではないかと思います。
|
nakamori |
投稿日時: 2024/2/13 22:41
対応状況: −−−
|
常連 登録日: 2018/4/25 居住地: 投稿: 33 |
Re: データ移行プラグイン(4.2系)でデータが完全に移行されない > これはCSVデータを変えずに同じデータを取り込んで発生するということですか?
はい。毎回同じデータをアップロードしています。 |
(1) 2 » |
スレッド表示 | 古いものから | 前のトピック | 次のトピック | トップ |