EC-CUBE 4系でマイグレーションを再度実行する方法を解説します。プラグイン開発やカスタマイズ時に、一度実行したマイグレーションをやり直したいケースは多いです。この記事では、2つの方法を具体的なコマンド例とともに紹介します。

EC-CUBEのマイグレーションとは

EC-CUBEはDoctrine Migrationsを使用してデータベースのスキーマ変更を管理しています。マイグレーションを実行すると、migration_versionsテーブルに実行履歴が記録され、同じマイグレーションは再実行されません。

方法1: migration_versionsテーブルから履歴を削除する

最もシンプルな方法は、migration_versionsテーブルから該当レコードを削除することです。

手順

1. 実行済みマイグレーションの確認

SELECT * FROM migration_versions ORDER BY executed_at DESC;

2. 該当レコードの削除

DELETE FROM migration_versions 
WHERE version = 'DoctrineMigrations\Version20240101000000';

3. マイグレーションの再実行

bin/console doctrine:migrations:migrate

方法2: doctrine:migrations:migrate でロールバックする

Doctrine Migrationsのdownメソッドを使ってロールバックし、再度適用する方法です。

1つ前のバージョンに戻す場合

# ロールバック
bin/console doctrine:migrations:migrate prev

# 再適用
bin/console doctrine:migrations:migrate

特定のバージョンまで戻す場合

bin/console doctrine:migrations:migrate DoctrineMigrations\Version20240101000000

どちらの方法を選ぶべきか

方法メリットデメリット
テーブル削除downメソッド不要、確実DB直接操作が必要
ロールバックコマンドのみで完結downメソッドの実装が必要

注意点

  • 本番環境では必ずバックアップを取得してから実行してください
  • downメソッドが未実装の場合、ロールバックは失敗します
  • 外部キー制約がある場合、削除順序に注意が必要です

まとめ

EC-CUBEでマイグレーションを再実行するには、migration_versionsテーブルの履歴削除か、doctrine:migrations:migrateコマンドでのロールバックが有効です。開発環境での動作確認を十分に行ってから、本番環境に適用しましょう。

日本発!ECオープンプラットフォーム「EC-CUBE」 EC-CUBEゴールドパートナー EC-CUBEは株式会社イーシーキューブの商標です

EC-CUBEに関するお問い合わせ


    [重要]現在公式にセキュリティサポートが切れていないPHPは8.1以上、MySQLは8.0以上で、対応しているEC-CUBEバージョンは4.2以上です。古いEC-CUBEを使っている方は適切なタイミングでバージョンアップをご検討ください。

    EC-CUBEバージョンアップ