Appearance
イベントマスタ(db_event_master)導入手順
イベントマスタテーブル(db_event_master)をローカル環境および本番環境(ConoHa WING 等)に導入する手順です。PR #988 / Issue #976 に対応します。
CREATE TABLE などの DDL・列定義の正本は EventMasterInstaller.php 内の dbDelta 用 SQL 文字列です。
概要
- テーブル:
{prefix}db_event_master(イベント名+ホールの正規化マスタ) - 必要な作業:
- コード反映(デプロイ or git pull)
- PHP-DI キャッシュ削除(DI 変更のため)
- テーブル作成 — 通常は管理画面アクセス時に自動(Issue #1485)。
AdminDatabaseInstaller::ensure_all()がadmin_initでdbDeltaによりEventMasterInstallerが{prefix}db_event_masterを作成します。Installer が失敗した場合はEventMasterInstaller.phpの CREATE 定義を接頭辞に合わせて MySQL で実行するか、カスタムアプリケーションテーブル(DBML) を参照してください。.maintenanceで本番サイトを停止している間に作成する場合も、管理画面ではなくこれらを手動実行してください。 - 初期データ投入(
wp_db_Link_day.eventから一度だけ投入)
既存データのマイグレーション
本テーブルは新規のため、既存データの移行は不要です。初期データはシードスクリプトで一度だけ投入してください。
ローカル環境での導入手順
1. コードを取得
bash
# プロジェクトルート(myCustom)で
git fetch origin pull/988/head:issue/976-event-master-table
git checkout issue/976-event-master-table
# または develop にマージ済みの場合
git pull origin develop2. PHP-DI キャッシュを削除
bash
# myCustom ディレクトリで
./bin/clear-php-di-cache.sh- キャッシュファイルは
wp-content/cache/php-di/CompiledContainer.phpです。 WP_CONTENT_DIRが異なる場合はWP_CONTENT_DIR=/path/to/wp-content ./bin/clear-php-di-cache.shのように指定してください。
3. 管理画面を開く(テーブル自動作成)
manage_options 権限のユーザーで WordPress 管理画面にアクセスしてください。admin_init で AdminDatabaseInstaller::ensure_all() が実行され、EventMasterInstaller が dbDelta により {prefix}db_event_master を冪等に作成します(本番移行手順(参考・目次) の推奨順と同様、コード反映・PHP-DI キャッシュ削除の後に実施してください)。
- 緊急リカバリ(自動作成が失敗したとき):
EventMasterInstaller.phpの CREATE 定義を接頭辞に合わせて MySQL で実行してください。 - 既存テーブルにカラムを追加する場合(レガシー環境向け): 同ファイルの定義と突き合わせ、不足列を ALTER で追加してください(
event_master_db_versionが進んでいるとdbDeltaが再実行されない場合があります)。
4. 初期データ投入(一度だけ)
シードスクリプトは (name, hall) のみ投入し、is_show・created_at・updated_at はテーブルの DEFAULT で設定されます。
注意: 複数のプロセスから同時に実行しないでください。
WP-CLI が利用可能な場合(WordPress のドキュメントルートが app/public のとき)
接続手順は WP-CLI 接続手順 を参照してください。未導入の場合は WP-CLI 導入手順 を参照してください。
bash
cd /path/to/app/public
wp eval-file wp-content/themes/cocoon-child-master/myCustom/scripts/seed-event-master-from-link-day.php- 成功時は
Processed N unique (name, hall) pairs, inserted M new rows ...のような出力が表示されます。 - 再実行が必要な場合は、
wp_optionsのevent_master_seed_executedを削除すれば再度実行できます(Issue #991)。削除方法の例は以下のとおりです。WP-CLI を使用する場合:
bashwp option delete event_master_seed_executedphpMyAdmin や MySQL クライアントで直接削除する場合:
sqlDELETE FROM wp_options WHERE option_name = 'event_master_seed_executed';テーブル接頭辞が
wp_でない場合は、wp_optionsを実際の接頭辞に合わせて書き換えてください(例:wp123_optionsなど)。
Local by Flywheel で「Error establishing a database connection」や「No such file or directory」が出る場合: Mac のターミナルで wp eval-file ... を実行すると、ホストの PHP と Local 内の MySQL がつながらず、上記エラーになることがあります。Local のサイトシェルを開き、その中で同じコマンドを実行してください。手順は WP-CLI 接続手順 を参照してください。
本番環境(ConoHa WING 等)での導入手順
本番移行手順の一覧(イベントマスタ・〇〇の日専用テーブルなどの実行順序)は 本番移行手順(参考・目次) を参照。全体の流れは 本番環境移行手順(概要) にまとめてあります。
本番サーバーへの SSH 接続方法がわからない場合は 本番環境への接続方法 を参照してください。
WP-CLI の接続・確認: WP-CLI 接続手順 を参照してください。未導入の場合は WP-CLI 導入手順 を参照し、導入しない場合は下記「4. 本番で初期データ投入」の 方法 B: WP-CLI が無い場合 に従い、php -r でシードスクリプトを実行してください。
1. デプロイ
bash
# プロジェクトルート(myCustom)で
./bin/build.sh
./bin/deploy.sh
# またはバージョン指定: ./bin/deploy.sh 20260202_120000config/local.envにDEPLOY_SSH_KEY,DEPLOY_USER,DEPLOY_HOST,DEPLOY_REMOTE_PATHを設定しておいてください。- ConoHa WING で Git デプロイ等の別手段を使っている場合は、その手順で PR #988 のコードを本番に反映してください。
2. 本番で PHP-DI キャッシュを削除
サーバー上の WordPress の wp-content ディレクトリ で実行します。
bash
rm -f cache/php-di/CompiledContainer.php- パスは本番の WordPress 構成に合わせて調整してください。
3. 本番で管理画面を開く(テーブル自動作成)
デプロイおよび PHP-DI キャッシュ削除の後、manage_options 権限のユーザーで本番の WordPress 管理画面にアクセスしてください。AdminDatabaseInstaller::ensure_all() により {prefix}db_event_master が自動作成されます。
注意:
.maintenanceによる WordPress メンテナンスモード中はwp-adminも 503 になり、admin_initが実行されません。本番移行の停止中にテーブル作成を完了する場合は、管理画面アクセスではなくEventMasterInstaller.phpの CREATE 定義を接頭辞に合わせて手動実行してください。
- 緊急リカバリ:
EventMasterInstaller.phpの CREATE 定義、または カスタムアプリケーションテーブル(DBML) の記述を参照。
4. 本番で初期データ投入(一度だけ)
シードスクリプトは (name, hall) のみ投入し、is_show・created_at・updated_at はテーブルの DEFAULT で設定されます。
注意: 複数のプロセスから同時に実行しないでください。
方法 A: WP-CLI がある場合
接続手順は WP-CLI 接続手順 を参照してください。本番の WordPress ドキュメントルート で:
bash
wp eval-file wp-content/themes/cocoon-child-master/myCustom/scripts/seed-event-master-from-link-day.php方法 B: WP-CLI が無い場合(PHP で直接実行)
本番サーバーに SSH 接続したあと、WordPress のドキュメントルートに移動し、PHP で WordPress を読み込んでからシードスクリプトを実行します。
bash
# ドキュメントルートへ移動(パスは本番の構成に合わせる)
cd ~/public_html/あなたのドメイン
# WordPress を読み込んでからシードスクリプトを実行
php -r "require 'wp-load.php'; require 'wp-content/themes/cocoon-child-master/myCustom/scripts/seed-event-master-from-link-day.php';"- ドキュメントルートのパス(例:
~/public_html/example.com)は ConoHa WING の実際の構成に合わせて変更してください。 - テーマが別ディレクトリ(例:
wp-content/themes/〇〇/myCustom)の場合は、requireのパスも合わせて変更してください。 - 成功時は
Processed N unique (name, hall) pairs, inserted M new rows ...と表示されます。実行後はコマンド履歴から消すか、記録を残さない運用で問題ありません。 - 再実行が必要な場合は、
wp_optionsのevent_master_seed_executedを削除すれば再度実行できます(Issue #991)。削除方法の例は以下のとおりです。WP-CLI を使用する場合:
bashwp option delete event_master_seed_executedphpMyAdmin や MySQL クライアントで直接削除する場合:
sqlDELETE FROM wp_options WHERE option_name = 'event_master_seed_executed';テーブル接頭辞が
wp_でない場合は、wp_optionsを実際の接頭辞に合わせて書き換えてください(例:wp123_optionsなど)。
手順一覧(チェック用)
| 作業 | ローカル | 本番(ConoHa WING 等) |
|---|---|---|
| コード反映 | git checkout / git pull | ./bin/build.sh → ./bin/deploy.sh 等 |
| DI キャッシュ削除 | ./bin/clear-php-di-cache.sh | サーバーで rm cache/php-di/CompiledContainer.php |
| テーブル作成 | 管理画面アクセスで自動(緊急時は EventMasterInstaller の CREATE 定義) | 通常は管理画面アクセスで自動(.maintenance 停止中・Installer 失敗時は手動 CREATE) |
| 初期データ投入 | wp eval-file .../scripts/seed-event-master-from-link-day.php | 本番: WP-CLI または php -r "require 'wp-load.php'; require '.../seed-...';"(上記「方法 B」参照) |