【はじめに】
- 本サイトのダウンロード商品を上書きするだけではEC-CUBEの移行はできません。
- データベースも単純にエクスポート、インポートするだけでは移行できません。
- データベースの構成が違いますので、構成を合わせてからエクスポートする必要があります。
- エクスポート、インポートの際、テーブルを削除する方法もありますが、ここでは「空にする」方法で説明します。
【大まかな操作の流れ】
- 本サイトのEC-CUBEカスタマイズをインストール。
- 現行サイトのデータベースを、新規インストールしたデータベース構成に合わせる。
- 現行サイトのデータベースをエクスポートし、新規インストールしたデータベースにインポートする。
【モジュール・プラグイン】
- モジュールやプラグインは移行することが出来ませんので、新規EC-CUBEに対して再インストールが必要です。
【ご注意】
- データベースファイルのバックアップや復元については、MySQLではphpMyAdmin、PostgreSQLではphpPgAdminの利用を前提に説明しています。
- phpMyAdminやphpPgAdminのバージョンやサーバの環境により、必ずしも説明画像や内容と一致するものではありません。
-
また、データベースベースの移行についてはご自身の責任のもと作業をお願いいたします。
復元等が不能になった場合など、こちらとしては責任を負いかねますので、その点どうぞご了承ください。
データベースの移行における共通の操作
(1)現在のデータベース(移行元)のバックアップ
- 万一の時に備えて、元のデータベースに復元できるようにバックアップをとります。
-
バックアップするファイルの形式(フォーマット)はいくつかありますが、バックアップファイルを使って復元するためには、復元用で用意されているファイル形式でパックアップする必要があります。
つまり、エクスポート(バックアップ)するファイル形式は、インポート(復元)できるファイルの形式でなければいけません。
エクスポートする前に、インポートのファイル形式を確認しておきましょう。 - 復元のためには、データベースをまとめてバックアップします。
【MySQL:phpMyAdmin】
▼データベースをまとめてバックアップ
- 対象となるデータベースを選択します。
- 「エクスポート」タブをクリックします。
-
テーブルがすべて選択されていること、ファイル形式は移行先にインポートできる形式であることを確認します。
ここでは、ファイル形式:SQL、 "gzip 形式" を選択して、「実行する」をクリックし、ファイルをPC上にダウンロードします。
【PostgreSQL:phpPgAdmin】
▼データベースをまとめてバックアップ
- 対象となるデータベースを選択します。
- 「エクスポート」をクリックします。
- 「構造とデータ」を選択、フォーマットは「COPY」を選択。
- オプションは、「表示」を選択。
- エクスポートボタンをクリックして、phpファイルをPC上にダウンロードします。
(2)移行元と移行先のテーブル構造を同じにする
- 同一構造にしないと、移行できません。
- 同一構造にしなければならないテーブルは限られています。
- 同一構造になっている他のテーブルについては、エクスポート・インポートのみの作業となります。
EC-CUBEデフォルトのカラム(フィールド)構造と、本サイトのカラム(フィールド)構造は、それぞれ下記ファイルで確認できます。
また、プラグインを導入している場合は、構造が変更されている場合がありますので、実際のデータベース上で確認しておくことも重要です。
たとえば、dtb_productsテーブルを例にすると、
EC-CUBEカスタマイズでは、20個ほどのカラム(フィールド)が追加されています。
これらのカラムを、はじめに移行元のdtb_productsテーブルに追加します。
追加するためのSQL文は、下記のようになります。(コピーしてご利用ください)
【MySQL】■html/install/sql/create_table_mysql.sql
【PostgreSQL】■html/install/sql/create_table_pgsql.sql
作業の前に、構造の違いについて必ず確認してください。また、プラグインを導入している場合は、構造が変更されている場合がありますので、実際のデータベース上で確認しておくことも重要です。
たとえば、dtb_productsテーブルを例にすると、
EC-CUBEカスタマイズでは、20個ほどのカラム(フィールド)が追加されています。
これらのカラムを、はじめに移行元のdtb_productsテーブルに追加します。
追加するためのSQL文は、下記のようになります。(コピーしてご利用ください)
ALTER TABLE dtb_products ADD noshi smallint NOT NULL DEFAULT 2; ALTER TABLE dtb_products ADD youtube text; ALTER TABLE dtb_products ADD map_url text; ALTER TABLE dtb_products ADD thumbnail_only smallint NOT NULL DEFAULT 2; ALTER TABLE dtb_products ADD ranking_mark int NOT NULL DEFAULT 1; ALTER TABLE dtb_products ADD arrival_date timestamp NULL; ALTER TABLE dtb_products ADD endsell_date timestamp NULL; ALTER TABLE dtb_products ADD pagetitle text; ALTER TABLE dtb_products ADD author text; ALTER TABLE dtb_products ADD description text; ALTER TABLE dtb_products ADD keywords text; ALTER TABLE dtb_products ADD head1 text; ALTER TABLE dtb_products ADD head2 text; ALTER TABLE dtb_products ADD head3 text; ALTER TABLE dtb_products ADD head4 text; ALTER TABLE dtb_products ADD head5 text; ALTER TABLE dtb_products ADD head6 text; ALTER TABLE dtb_products ADD head7 text; ALTER TABLE dtb_products ADD head8 text; ALTER TABLE dtb_products ADD head9 text; ALTER TABLE dtb_products ADD head10 text;
注意しなければいけないこと
カラム数が違っていれば、インポートエラーが発生しコピーすることはできませんが、カラム数さえ合っていれば、順序に関係なくインポートできてしまうので、ここは重要なポイントです。
順序が違った状態で登録されると、サイト上ではおかしな表示になってしまいますので注意してください。
また、プラグインを導入している場合、
プラグインによっては、カラムに項目を追加するものもあります。
その場合は、移行元の追加さているカラムを削除しておかなければいけません。
これも重要なポイントです。
とにかく、移行元、移行先を全く同じ構造にしておくことが重要です。
(3)データベース(テーブル)の移行手順
-
移行元と移行先の構造が異なる場合は、構造を同じにします。
コピーしたSQL文は次のようにして貼り付けます。【MySQL:phpMyAdmin】◆画像で確認- データベース名を選択
- 「SQL」タブをクリック
- クエリボックスにクエリをコピー&ペースト
- 「実行する」をクリック
【PostgreSQL:phpPgAdmin】◆画像で確認- データベース名を選択
- 右上に表示されている「SQL」をクリック
- クエリボックスにクエリをコピー&ペースト
- 「実行する」をクリック
-
移行元のテーブルデータをエクスポートします。
【MySQL:phpMyAdmin】(例)dtb_products ◆画像で確認
- dtb_productsを選択
- 「エクスポート」タブをクリック
- 設定はそのままで(ファイル形式はSQL)
- 圧縮方法で、gzip形式を選択
- 「実行する」ボタンをクリック
- dtb_products.sqlファイルをPC上にダウンロード
【PostgreSQL:phpPgAdmin】(例)dtb_products ◆画像で確認- dtb_productsを選択
- 「エクスポート」をクリック
- フォーマットで「データのみ」を選択。
- オプションで「CSV」をチェック
- 「ダウンロード」を選択。
- 「エクスポート」ボタンをクリック
- dump.csvファイルをPC上にダウンロード
-
ダウンロードするファイル名はすべて同じなので、dtb_productsであることが分かるように名前変更しておくといいでしょう。
dump.csv→dtb_products.csv
-
新しい移行先のテーブルを空にします。
【MySQL:phpMyAdmin】(例)dtb_products ◆画像で確認
- dtb_productsを選択→「空にする」タブをクリック。
【PostgreSQL:phpPgAdmin】(例)dtb_products ◆画像で確認- テーブルの一覧からdtb_productsの操作欄にある「空にする」ボタンをクリック。
-
エクスポートしたファイルを、移行先にインポート。
【MySQL:phpMyAdmin】(例)dtb_products ◆画像で確認
- dtb_productsを選択
- 「インポート」タブをクリック
- インポートするファイルの形式を確認(SQL)
- テキストファイルの位置「参照」をクリックして、エクスポートしたdtb_products.sqlを選択
- 「実行する」をクリックして完了
【PostgreSQL:phpPgAdmin】(例)dtb_products ◆画像で確認- dtb_productsを選択
- 「インポート」をクリック
- ファイル「参照」をクリックして、エクスポートしたdump.csvを選択
- 「インポート」をクリックして完了