Table of Content
ec-cube 2.13.3から4.0.3 にバージョンアップをするには、「データ移行プラグイン」を使うことでデータ移行することができるが、プラグインだけでは移行できない項目がある。
(この記事でのDBはMySQL)
データ移行プラグインを実行できない場合の確認事項
- アップロードサイズは十分か (php.ini)
- メモリは十分か (php.ini)
- 実行時間の設定 (apache2.conf, php.ini)
php.ini を編集しても「upload_max_filesize」が変わらない時は「.htaccess」の数値を変更(気がつかないで数時間悩んだ)。
レビューデータの移行
カラム名が異なっているが基本的には同じ。
新しいテーブルには制約がかかっているので、存在しない顧客番号、商品番号、性別番号は登録できない。
4系でなくなったカラム
- creator_id
- del_flg
外部キーが設定されているカラム
- product_id
- sex_id
移行手順
予めレビュープラグインをインストール、有効化しておく。
ここではphpMyAdminで操作
- 旧DB : sqlを使いcsvを出力
- 新DB : zipで圧縮したcsvをアップロード
注意点
csvをアップロードする際にエクスポート時に指定したカラムの区切り、エスケープ文字を合わせる。
データ出力
select
dtb_review.review_id as id,
case dtb_review.sex
when 0 then 2
when 1 then 1
when 2 then 2
else 2
end as sex_id,
dtb_review.product_id,
dtb_review.customer_id,
dtb_review.status as status_id,
dtb_review.reviewer_name,
dtb_review.reviewer_url,
dtb_review.title,
dtb_review.comment,
dtb_review.recommend_level,
dtb_review.create_date,
dtb_review.update_date
from
dtb_review
join dtb_products
on dtb_review.product_id = dtb_products.product_id
where
dtb_review.del_flg = 0 and dtb_products.del_flg = 0
order by
dtb_review.review_id
メールマガジンデータ移行
移行手順
予めメールマガジンプラグインをインストール、有効化しておく。
ここではphpMyAdminで操作
- 旧DB : sqlを使いcsvを出力
- 新DB : zipで圧縮したcsvをアップロード
テンプレート
データ出力
select
template_id,
subject,
body,
'' as html_body,
create_date,
update_date
from
dtb_mailmaga_template
where
del_flg = 0
order by
template_id
配信履歴
データ出力
select
send_id,
case creator_id
when 1 then 1
when 2 then 2
when 3 then 3
else 3
end creator_id,
mail_method,
subject,
body,
'' as html_body,
send_count,
complete_count,
0 as error_count,
start_date,
end_date,
search_data,
create_date,
update_date
from
dtb_send_history
where
del_flg = 0
order by
send_id
お気にりデータ移行
- 旧テーブルをリネームして新DBにインポート
dtb_customer_favorite_products -> dtb_customer_favorite_products_v2
- お気に入りデータの登録
insert into dtb_customer_favorite_product(customer_id, product_id, create_date, discriminator_type)
select
customer_id, product_id, create_date, update_date
from
dtb_customer_favorite_products_v2
商品 サブ情報の画像データ移行
2系にあったサブ情報の画像はdtb_product_image
に登録する。
旧テーブルをリネームして新しいDBにインポート
dtb_products -> dtb_products_v2
サブ情報の画像のみを抽出するviewを作成する。
CREATE VIEW v_products_image_list AS
select
product_id,
case sub_large_image1
when '' then sub_image1
else sub_large_image1
end as image1,
case sub_large_image2
when '' then sub_image2
else sub_large_image2
end as image2,
case sub_large_image3
when '' then sub_image3
else sub_large_image3
end as image3,
case sub_large_image4
when '' then sub_image4
else sub_large_image4
end as image4,
case sub_large_image5
when '' then sub_image5
else sub_large_image5
end as image5,
case sub_large_image6
when '' then sub_image6
else sub_large_image6
end as image6
from
dtb_products_v2
where
del_flg = 0
order by
product_id
次にサブ画像を登録
insert into dtb_product_image (product_id, creator_id, file_name, sort_no, create_date, discriminator_type)
select
product_id, 3 as creator_id, image as file_name, sort_no, now() as create_date, 'productimage' as discriminator_type
from (
select product_id, image1 as image, 2 as sort_no from v_products_image_list
union all
select product_id, image2 as image, 3 as sort_no from v_products_image_list
union all
select product_id, image3 as image, 4 as sort_no from v_products_image_list
union all
select product_id, image4 as image, 5 as sort_no from v_products_image_list
union all
select product_id, image5 as image, 6 as sort_no from v_products_image_list
union all
select product_id, image6 as image, 7 as sort_no from v_products_image_list
order by
product_id
) as tmp
where
tmp.image is not NULL and tmp.image != ''
参考URL