Skip to content

イベントマスタ(db_event_master)導入手順

イベントマスタテーブル(db_event_master)をローカル環境および本番環境(ConoHa WING 等)に導入する手順です。PR #988 / Issue #976 に対応します。

CREATE TABLE などの DDL・列定義の正本は EventMasterInstaller.php 内の dbDelta 用 SQL 文字列です。


概要

  • テーブル: {prefix}db_event_master(イベント名+ホールの正規化マスタ)
  • 必要な作業:
    1. コード反映(デプロイ or git pull)
    2. PHP-DI キャッシュ削除(DI 変更のため)
    3. テーブル作成 — 通常は管理画面アクセス時に自動(Issue #1485)。AdminDatabaseInstaller::ensure_all()admin_initdbDelta により EventMasterInstaller{prefix}db_event_master を作成します。Installer が失敗した場合は EventMasterInstaller.php の CREATE 定義を接頭辞に合わせて MySQL で実行するか、カスタムアプリケーションテーブル(DBML) を参照してください。.maintenance で本番サイトを停止している間に作成する場合も、管理画面ではなくこれらを手動実行してください。
    4. 初期データ投入(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 develop

2. 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_initAdminDatabaseInstaller::ensure_all() が実行され、EventMasterInstallerdbDelta により {prefix}db_event_master を冪等に作成します(本番移行手順(参考・目次) の推奨順と同様、コード反映・PHP-DI キャッシュ削除のに実施してください)。

  • 緊急リカバリ(自動作成が失敗したとき): EventMasterInstaller.php の CREATE 定義を接頭辞に合わせて MySQL で実行してください。
  • 既存テーブルにカラムを追加する場合(レガシー環境向け): 同ファイルの定義と突き合わせ、不足列を ALTER で追加してください(event_master_db_version が進んでいると dbDelta が再実行されない場合があります)。

4. 初期データ投入(一度だけ)

シードスクリプトは (name, hall) のみ投入し、is_showcreated_atupdated_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_optionsevent_master_seed_executed を削除すれば再度実行できます(Issue #991)。削除方法の例は以下のとおりです。
    • WP-CLI を使用する場合:

      bash
      wp option delete event_master_seed_executed
    • phpMyAdmin や MySQL クライアントで直接削除する場合:

      sql
      DELETE 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_120000
  • config/local.envDEPLOY_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 定義を接頭辞に合わせて手動実行してください。

4. 本番で初期データ投入(一度だけ)

シードスクリプトは (name, hall) のみ投入し、is_showcreated_atupdated_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_optionsevent_master_seed_executed を削除すれば再度実行できます(Issue #991)。削除方法の例は以下のとおりです。
    • WP-CLI を使用する場合:

      bash
      wp option delete event_master_seed_executed
    • phpMyAdmin や MySQL クライアントで直接削除する場合:

      sql
      DELETE 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」参照)

関連ドキュメント