CakePHP1.2の話。
データベースのテーブル定義を更新しようと、schema.phpを編集してcakeコマンドでスキーマの更新をかけようとしたら、失敗した。
Can't DROP 'indexes'; check that column/key exists
indexesがDROPできないから更新できないよ~!ということらしい。
Googleで検索してみたところ、Google groupのcakephpのところに答えがあった。
http://groups.google.co.jp/group/tickets-cakephp/browse_thread/thread/84cbdf3093415923
ただ、cakeのコアを編集することになるので、
Cakeのバージョンがアップしたときに対応されてないと
またバグになってしまうので注意が必要かと思う。
// CORE/cake/libs/model/schema.phpの430行目
$tables[$table]['drop']['indexes'] = $diff['drop'];
$tables[$table]['add']['indexes'] = $diff['add'];
// を下記のように編集する
// $tables[$table]['drop']['indexes'] = $diff['drop'];
// $tables[$table]['add']['indexes'] = $diff['add'];
if(!empty($diff['drop'])) {
$tables[$table]['drop']['indexes'] = $diff['drop'];
}
if(!empty($diff['add'])) {
$tables[$table]['add']['indexes'] = $diff['add'];
}
この修正後、スキーマの更新を再度行ったら、indexesが正常に更新されました。
よかったよかった。
