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