EC|CUBE MySQLからPostgreSQLへ乗り換えの覚書
共用レンタルサーバーで運用中のEC|CUBEの表示が遅いので、MySQLからPostgreSQLへ移行した時の自分用の覚書。
データベースをWebブラウザから操作できると楽なので、MySQLはphpMyAdmin、postgreSQLはphpPgAdminを使って作業。
環境が異なると作業内容も違うと思うので注意。 おまけに書きかけです。内容は信用しないように。
参考サイト
B豚の備忘録 | EC-CUBEやWORDPRESS、オープンソースの情報メモ
EC-CUBE用に全てのパーミッションを自動的に一括変更するCGI
メンテナンス中画面を出す正しい作法と.htaccessの書き方
EC-CUBE KnowHow WIKI
作業手順
- 新しいサーバーにpostgreSQLのDBを作成
- 新しいサーバーにEC|CUBEをインストール
- 運用中のショッピングサイトを停止。
- MysqlからデータをCSVで書き出す。
- postgreSQL内のデータを全て空にする。
- postgreSQLに書き出しておいたCSVデータをインポート
- 動作確認とチェック
- テンプレートのインポート
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の「シーケンス」 から該当するものを選び「値を設定する」をクリックしてメモしておいた値を入力





