CakePHP:schema.phpのindexesの更新でバグ

このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

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

トラックバックURL

トラックバック

コメント一覧

この投稿のコメントフィード

よろしければコメントをお願いします!





以下のタグを使用することが出来ます:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt="">

Get Adobe Flash playerPlugin by wpburn.com wordpress themes