Blog

【ECCUBE】2.4系→2.13系へバージョンアップ

2016/02/01

ECCUBE2.13 ECCUBE2.11~ ECCUBE2.4

久々にECCUBEのリニューアルが入り、
2.11から2.13への移行があったため備忘録として残します。

以前、2.4から2.13へのバージョンアップがあり、
その時に参考にしたサイトです。

ECCUBEのDB移行【ver 2.3.4 → 2.13.1】

【1】各バージョンのECCUBEをインストール

ローカルあるいはサーバーに各ECCUBE(2.11.5、2.12.6、2.13.1)をインストールします。

【2】2.4のエクスポート

オーナーズストアからデータエクスポートモジュール(2.4系)を入手し、
管理画面でモジュールが追加されているか確認をしてください。

参考サイトによるとモジュールの修正が必要です。
LC_Page_Mdl_Down_Cw_Config.phpの106行目付近

$where = "classcategory_id1 <> '0' AND classcategory_id2 <> '0'";
↓↓↓修正↓↓↓
$where = "dtb_products_class.classcategory_id1 <> '0'";

修正が完了したらエクスポートをしてください。

【3】2.11へインポート

オーナーズストアからデータインポートモジュール(2.11系) を入手し、
先ほどインストールをした2.11へモジュールが追加されているか確認してください。

参考サイトによるとファイルの修正が必要です。

LC_Page_Mdl_Upload_Cyber.phpの1130行目以降

//      $where .= " )"; ↓修正↓
        if ($where) $where .= " )";
        if ($arrList['class_name'] != ""
            && $arrList['classcategory_name'] != "") {
            $class_id = $objQuery->getOne("SELECT class_id FROM dtb_class WHERE name = ?", array($arrList['class_name']));
            $classcategory_id2 = $objQuery->getOne("SELECT classcategory_id FROM dtb_classcategory WHERE class_id =? AND name = ?", array($class_id,$arrList['classcategory_name']));
//          $where .= " AND classcategory_id = ?"; ↓修正↓
            $where .= $where ? " AND classcategory_id = ?" : "classcategory_id = ?";
            $arrval[] = $classcategory_id2;
 
            $class_combination_id = $objQuery->getOne("SELECT class_combination_id FROM dtb_class_combination WHERE ".$where, $arrval);
            $product_class_id = $objQuery->getOne("SELECT product_class_id FROM dtb_products_class WHERE product_id = ? AND class_combination_id = ?", array($arrList['product_id'], $class_combination_id));
        } else {
//          $where .= " AND product_id = ?"; ↓修正↓
            $where .= $where ? " AND product_id = ?" : "product_id = ?";
            $arrval[] = $arrList['product_id'];
//          $product_class_id = $objQuery->getOne("SELECT product_class_id FROM dtb_products_class WHERE ".$where, $arrval); ↓修正↓
            $product_class_id = $objQuery->getOne("SELECT product_class_id FROM dtb_products_class LEFT JOIN dtb_class_combination ON dtb_products_class.class_combination_id = dtb_class_combination.class_combination_id WHERE ".$where, $arrval);
        }

ファイルを修正後、先ほどエクスポートしたデータをインポートしてください。

【4】2.11のデータエクスポート

オーナーズストアよりデータエクスポートモジュール(2.11系)を入手し、
2.11にモジュールが追加されているか確認をして、データをエクスポートします。

【5】2.12へインポート

オーナーズストアよりデータ移行プラグイン(インポート)を入手し、
先ほどインストールしたECCUBE2.12にモジュールが追加されているか確認をしてください。
2.11のエクスポートデータを2.12へアップします。

参考サイトによると、

「なぜか dtb_products_status テーブルの移行が忘れられているので、ver2.11.5のテーブルからver2.12.4のテーブルにデータをコピーしてください。」

ということでDBから直接データをコピペしてください。

【追加】
実際に作業をした案件で、商品だけインポートできませんでした。
DBをみるとdtb_productsのみがインポートされていなかったため、
一旦、2.12のdtb_productsを削除し、2.11のSQLをアップしたところ無事表示されました。

気を付けなくてはいけないのは、dtb_products_classは2.11と2.12はカラム構造が違います。
2.11のSQLをそのままインポートするとエラーになります。
今回の作業では、dtb_products_classはすでにインポートされていたので問題はありませんでした。

【5】2.12→2.13

2.12と2.13ではテーブルのカラムが違うため注意が必要です。
まず、ver2.12.4用のDBをver2.13.1用に複製します。
複製したら、下記の参考サイトからDBアップグレード用のSQLを入手し実行してください。

参考サイト
EC-CUBE2.12.6から2.13.1にアップグレードする為のSQL

SQL実行後、ver2.13.1の data/config/config.php の各定数の値を変更してください。
<変更箇所>
・使用するDBを、アップグレードしたDBに変更
・「AUTH_MAGIC」の値をver2.12.4のconfig.phpと同じ値に変更

MySQLからPostgreSQLの場合には、こちらの記事も参考にしてください。
【ECCUBE】DBのインポート作業

上記の作業はECCUBEをカスタムしていないことを前提としています。

classファイルやDBをカスタマイズしている場合には、移行先でもカスタムが必要になります。

また、バージョン違いによってカスタムファイルが動かないことが多々ありますので注意が必要です。

カテゴリー

月間アーカイブ

MORE

ミュージシャンズ・プラザ

神社仏閣ホームーページ制作

ホームページ制作問合せ