書き置き。

ほぼ勉強の記録みたいなもんです。

shcemaの提供されていないCakePHP製AppのDB定義を更新する方法

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の場合にも、同じように対応が可能です。