見出し画像

EC-CUBE 3系から4系へ データのお引越し

(この記事の最終更新日時:2020/1/19 15:15)

前提条件として、私はエンジニアではありません。
素人目線で記事を書いていることを、どうぞご了承ください。
また、Windows環境で、phpMyAdminを使っています。 
違う環境の方は、適宜読み替えてくださいね。

私自身は、EC-CUBEは2.4から2.13までの順次アップデート経験と、2系から3系への乗り換え経験がありますが、それらのいずれも、逐一ネットで方法をググっては情報に助けられてきました。
今回3系から4系へお引越しを試みたのですが、参考になる情報があまりなく苦労したので、自分自身の備忘録として、また今後同じ様に苦労されるであろう私のような人に向けて、いくつか記事を残しておこうと思います。

EC-CUBE3系と4系は従兄弟のような存在ですが、特に商品・受注周りのデータの扱いが大きく異なります。
単なるバージョンアップと甘く見ず、両者は全くの別物、と考え、新規に別のシステムに移行するような気持ちで腹をくくりましょう。

-------------------------------------------------------------------------------------

◆まずはじめに

以下に、データのお引越しの具体的な作業についてお話ししていますが、はっきり言って、そこそこ手間です。
手間が惜しい方は、有料のプラグインがあるようですので、そちらを購入してくださいね。

3→4のデータ移行の基本的な流れとしては、

1):3系のDBから、移行したいテーブルのcsvファイルをエクスポート
2):4系の当該テーブルのcsvをエクスポート
3):3と4、両方のファイルを念入りに見比べながら、3系のデータを4系のテーブル構造に合わせて整形 
4):4系の当該テーブルの中身を削除
5):4系の当該テーブルに4系の構造に合わせた3系のcsvファイルをインポート

この作業を、移行したいDBのテーブルの数だけ繰り返すことになります。

なんだか地道で大変そうな作業ですよね。

でも大丈夫!

この一連の作業のうち、面倒な2)と3)の変換作業を楽にしてくれる、ありがた~~いスクリプトを、あけびさんが作ってくださっていました!!

◆3系のデータを4系形式に変換してくれるスクリプト

あけびさんが作ってくださったデータ変換スクリプトを用います。

https://akebi.jp/temp/csv_convert.zip

繰り返しになりますが、こちらのクリプトは、あくまで上記の作業手順の2)と3)(いちばん大事な部分)の作業を楽にしてくれるものです。
DBに接続して直接変換を行うものではなく、phpMyAdminでテーブルごとにエクスポートしたCSVファイルに対して変換を行なうものになりますので、同梱のreadmeの説明を見ながら、上の作業手順の1)と4)と5)の作業は自力で頑張ってやることになります。

こちらのスクリプトで移行できるデータは
dtb_category
dtb_class_category
dtb_class_name

dtb_customer
dtb_customer_address
dtb_customer_favorite_product
plg_point_customer (3系でポイントプラグイン使用時のみ。dtb_customerにポイント数が統合されます)

dtp_delivery
dtp_delivery_date (4系ではdtb_delivery_duration)
dtp_delivery_fee
dtp_delivery_time

dtb_order
dtb_order_detail (4系ではdtb_order_item)
dtb_shipping

dtb_product
dtb_product_category
dtb_product_class
dtb_product_image
dtb_product_stock
dtb_product_tag

以上20個になります。

同梱の説明どおりに作業をしていけば、おそらく問題なくデータ移行できるかと思います。

※(一応、受注詳細の表示は出来ますが、画面で何かのアクションをしようとするとエラーになるようです。4系の管理画面からは3系過去データの参照のみ、ということにとどめて割り切ってご利用ください。納品書印刷など詳細なアクションが必要な場合は3系の管理画面から行うのが確実です)

※(ポイントデータについて、この記事を最初に書いた時点では上のスクリプトでは移行出来ませんでしたが、その後あけびさんがポイントデータも移行できるように加筆修正してくださいました♪
自力でやろうと思うとめっちゃ面倒なんですよ~。
ありがとうございます!と皆さん心のなかで唱えましょう~~)

◆ポイントデータについて

上のスクリプト移行できるのは、会員の現在の保有ポイントのみ。
各受注履歴におけるポイントの加算、使用の履歴については、3系と4系とでデータの形式が大きく異なるため、移行は行っていません。

受注履歴の詳細にポイントの加算・使用の履歴が表示されないことになりますが、見れなくても最終的なお支払金額は合っている(小計とお支払い金額が違う場合、ポイントを使ったんだな、と想像はできます)のでいいかなと、個人的には思います。(大事なのは現時点で何ポイント持っているか、ということなので)

◆商品詳細が見れない場合

dtb_memberのidが3系と4系で違う場合、商品詳細を見れない場合があるので、もしも商品詳細を見れず、dtb_memberのidが3系と異なる場合には、3系からdtb_memberテーブルをそのまま4系に持ってくると見れるようになるかと思います。

◆authmagicの変更

最終的に3系の会員のパスワードを4系でも問題なく使うためには、4系のauthmagicの値を3系と同じにしてやる必要があります。

3系のauthmagicの場所:  /app/config/eccube/config.yml
4系のauthmagicの場所: .env

4系のauthmagicを3系のものに入れ替えると、それまで4系で使っていた管理パスワードでは管理画面に入れなくなるので、3系の管理画面と同じユーザー名とパスワードで4系にログインした後、適宜システム設定→メンバー管理から、管理画面に入室するユーザー名やパスワードの変更を行ってください。

ちなみに、開発環境では問題ありませんが、最終的に本番環境では.envの使用はやめたほうがいいそうです。
私も本番稼働時に環境変数を .htaccess に移し、.envを削除しました。

◆データ移行完了の確認

その他、無作為に会員情報を開いて、3系とポイント数が合っているか、配送先住所があっているか、カテゴリと商品があっているか等を確認してください。
(idとデータがずれていたら、修正の上データスクリプト変換をやり直してください)

問題がないようであれば、各配送方法に支払い方法を紐付けたり、特定商取引法を整えたり、デザイン・レイアウトを新しく作ったり…、と作業を重ねていってくださいね。

画像1


今後も暫くの間、私がeccube4でやったカスタマイズを備忘録として書いていく予定です。


この記事が気に入ったらサポートをしてみませんか?