CakePHP1.2.5ベースで開発されているCMSのcroogoですが、 DBのテーブル定義等はdumpされたsqlが提供されているのみで、 インストール時にはそのSQLを直接MySQL(phpMyAdmin経由)で実行するようになっています。 インストール時はそれで十分でしたが、開発元でテーブル定義が変更された場合に アップデートスクリプトが提供されていないため、SQLエラーが発生してしまいました。 そこでリポジトリの変更を追わずに差分だけをインストール済みのCroogoに適用する方法を考えました。
手順1 新規データベースを作成
手順2 最新のテーブル定義をインポート
config/sql/croogo.sql
phpMyAdminでインポートすると簡単に終わります。
手順3 bakeでDB接続設定を追加
../cake/console/cake bake [D]atabase Configuratio を選択
default意外の名前をつけて作成。 これはbakeを使わずにconfig/database.phpを直接開いて編集してもOK
手順4 schemaを書き出し
../cake/console/cake schema generate -connection merge -connection引数で、手順3で作成した接続設定名を指定するのがポイントです。
手順5 アップデート
../cake/console/cake schema run update
更新されたものが見つかった場合は、変更内容が表示されるので、確認して実行します。 default以外の設定を使っている場合は手順4同様に-connectionで指定します。
今回はcroogoの場合で紹介しましたが、その他のCakePHP製Appの場合にも、同じように対応が可能です。