共用レンタルサーバーで運用中のEC|CUBEの表示が遅いので、MySQLからPostgreSQLへ移行した時の自分用の覚書。
データベースをWebブラウザから操作できると楽なので、MySQLはphpMyAdmin、postgreSQLはphpPgAdminを使って作業。
環境が異なると作業内容も違うと思うので注意。 おまけに書きかけです。内容は信用しないように。

参考サイト
B豚の備忘録 | EC-CUBEやWORDPRESS、オープンソースの情報メモ
EC-CUBE用に全てのパーミッションを自動的に一括変更するCGI
メンテナンス中画面を出す正しい作法と.htaccessの書き方
EC-CUBE KnowHow WIKI

作業手順

  1. 新しいサーバーにpostgreSQLのDBを作成
  2. 新しいサーバーにEC|CUBEをインストール
  3. 運用中のショッピングサイトを停止。
  4. MysqlからデータをCSVで書き出す。
  5. postgreSQL内のデータを全て空にする。
  6. postgreSQLに書き出しておいたCSVデータをインポート
  7. 動作確認とチェック
  8. テンプレートのインポート
----------------------------

1.新しいサーバーにpostgreSQLのDBを作成

エンコードをUNICODEにすること。でないとあとで、EC|CUBEからテーブルを作る時エラーが出る。
ユーザー名、パスワードをメモ
 

2.新しいサーバーにEC|CUBEをインストール

EC|CUBEは新旧、バージョンをそろえるほうが無難かも?とりあえずバージョンをそろえてやってみる。
今回はURL直下にインストールするので、解凍したdataフォルダはそのまま”/”直下にアップロード。htmlフォルダは、フォルダをアップロードするのではなく、中のファイルをすべて”/”にアップロード。

define.phpを以下のように書き換えた
/** HTMLディレクトリからのDATAディレクトリの相対パス */
define(”HTML2DATA_DIR”, “/data/”);

/** DATA ディレクトリから HTML ディレクトリの相対パス */
define(”DATA_DIR2HTML”, “../”);

http://ドメイン/install/index.phpにアクセスし、手順通りインストールする。
一番手間のかかる、パーミッションの変更はFFFTPなどで行う。
インストールフォルダでCGIが使える(もしくは.htaccessで使えるように変更できるなら)なら、EC-CUBE用に全てのパーミッションを自動的に一括変更するCGI を使えると楽。今回はチマチマ手動で。
 
当然使用するDBはpostgreSQLで。ユーザー名、パスワード、DB名をメモ
インストール完了後、動作のチェックはしておく。
 

3.運用中のショッピングサイトを停止。

運用中のショッピングサイトを休止する。
メンテナンス中画面を出す正しい作法と.htaccessの書き方 を参考にしたけど…
 

4.MysqlからデータをCSVで書き出す。

B豚の備忘録 を参考にphpMyAdminで、以下のようにテーブル1個づつエクスポートする。

「MS Excel用CSVデータ」
Excelオプション 「NULL」

最初の1行目にフィールド名を追加する 「チェック」
Excelの種類 「Windows」
ファイルで保存する 「チェック」

圧縮 「無し」
エンコード 「non」

 mtb_Zipはバックアップしなくていいかも。大きくて時間もかかるので。郵便番号データなので、EC|CUBEの管理画面から生成できる。
 

5.postgreSQL内のデータを全て空にする。

phpPgAdminを使って、テーブル内のデータをすべて空にする

左メニューの「スキーマ」-「public」-「テーブル」を選択。
ページ下の「複数行の操作」-「すべて選択する」-「空にする」
 

6.postgreSQLに書き出しておいたCSVデータをインポート

phpPgAdminの「スキーマ」-「public」-「テーブル」からテーブルを選び、上部メニューの「インポート」を選択

フォーマット:CSV
NULL文字を許可するのチェックボックス3個ともチェックする。
ファイルを選びインポート

上記を101回繰り返す。
ファイルサイズが大きくエラーが出るときは、秀丸などのエディタでファイルを分割してインポート。
今回は”NULL,”などというわけのわからないフィールドが出てきてインポートエラーが発生。エラーが出るフィールドを特定して”,”を削除。
 

7.動作確認とチェック

今回はドメインをそのままで別のサーバーに移行したので、DNSが完全に浸透しておらず、旧サーバへのアクセスが発生し、確認しづらかった。
旧サーバーのファイルはすべてバックアップし、消してしまう。これで旧サーバーへアクセスしも「404」エラーが出るのでわかりやすい。
動作確認すると、新規データのidが旧データと重複して登録されているものがある。
   「管理画面」-「システム設定」-「パラメーター設定」で
   DEBUG_MODEをtrueにして確認。
phpPgAdminの「シーケンス」で調整
   まず、テーブルを表示しのidの最終値をメモしておく
   phpPgAdminの「シーケンス」 から該当するものを選び「値を設定する」をクリックしてメモしておいた値を入力
 

8.テンプレートのインポート

テンプレートをインポートして適用する