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が正常に更新されました。
よかったよかった。