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

このエントリーをはてなブックマークに追加
はてなブックマーク - shcemaの提供されていないCakePHP製AppのDB定義を更新する方法
Share on Facebook
Post to Google Buzz
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip
Share on FriendFeed

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

This entry was posted in 未分類. Bookmark the permalink.