とりあえず、

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分ほど。