とりあえず、
2.4.3⇒2.12.2 直で移行できるツールが無いので順を追って移行してみた。
もちろん前回の記事の内容をやってから。。。
◆2.11.5インポート時にエラー
1.MDB2 Error: null value violates not-null constraint(直前のINSERTはdtb_shipping)
フォーラムを漁っていたら下記対応を発見
・dtb_shippingのdeliv_idのヌル(null)を【はい】にする(移行作業後、元に戻す)。
・dtb_order_derailのproduct_class_idのヌル(null)を【はい】にする(移行作業後、元に戻す)。
2.インポート途中でセッションTIMEOUT
iniに max_execution_time = (※値は適宜)を設置(移行作業後、元に戻す)
3.再開時、それまでインポートしたものが消えた
LC_Page_Mdl_Upload_Cyber.phpの236行辺りでTABLEをDELETEしているので、
再開の時は走らないように少し手を加える(switch文をif文で囲っただけ。)
if($start <= 1){
// DB内容削除
switch ($key) {
case 'dtb_products_class':
$objQuery->delete("dtb_class");
$objQuery->delete("dtb_classcategory");
$objQuery->delete("dtb_class_combination");
break;
case 'dtb_products':
$objQuery->delete('dtb_products');
$objQuery->delete('dtb_products_class');
$objQuery->delete('dtb_product_status');
break;
case 'dtb_order':
$objQuery->delete("dtb_order");
$objQuery->delete("dtb_shipping");
break;
default:
$objQuery->delete($key);
}
}
これでTIMEOUTになっても続きからインポートできるはず。。。
と思ったら、途中「Native message: Duplicate entry '1827' for key 'PRIMARY'」などになり、data/downloads/module/mdl_db_import/save.logのカウントアップ(またはdata/logs/site.logのエラーデータをphpMyadminで削除しながら)を行いながら進めていかなければならなかった。
4.商品画像の移行
ちょっと時間かけてデータ精査しようと思い、画像も移行。
/www/upload/内にあるフォルダを全コピ
◆2.11.5エクスポート
◆2.12.2インポート時にエラー
1.インポート途中でセッションTIMEOUT
iniに max_execution_time = (※値は適宜)を設置(移行作業後、元に戻す)
2.再開時、それまでインポートしたものが消えた
LC_Page_Plugin_Data_Import_Config.phpの240行辺りでTABLEをDELETEしているので、
再開の時は走らないように少し手を加える。(if文追加)
if($start <= 1){
// DB内容削除
$objQuery->delete($key);
}
これで2.12.2でも続きからインポートできるはず
・
・
・
何回かのタイムアウト後、インポート完了
3.商品画像の移行
/www/upload/内にあるフォルダを全コピ
4.最終のデータ精査。
無事完了と思いきや…
5.商品ステータスが移行されていない
phpMyadminでdtb_product_statusのエクスポート⇒インポートで事足りるのだが
ここはプログラムの修正をして後世に残す
2.12.2インポートPG「LC_Page_Plugin_Data_Import_Config.php」には
商品ステータス登録を行う関数”lfRegistProductStatus”が用意されているので
2.11.5エクスポートPG「LC_Page_Mdl_Down_Cw_Config.php」でテーブルをCSVで
吐きだせばよい。
※118行辺りに追加
break;(←1つ前のcaseのbreak; 無くてもよいが嫌なので…)
case 'dtb_product_status':
$table = 'dtb_product_status';
$save_name = 'dtb_product_status';
$where = 'del_flg = 0';
break;
※(上記追加後の)594行辺りに追加
$arrDatabase['dtb_product_status'] = array(
'product_status_id',
'product_id',
'creator_id',
'create_date',
'update_date',
'del_flg',
);
6.受注IDと受注明細IDの精査
IDを揃えておく必要がある。移行したデータのMaxID+1をセット。
※AUTO_INCREMENTも忘れずに!!
dtb_order_order_id_seq
dtb_order_detail_order_detail_id_seq
2.12.2インポート時間は
会員:約1700件、注文:約3200件、商品:約100件で25分ほど。