CakePHP1.2.8248 cake bake schemaの失敗談
このエントリーは、結論から言うと
bakeのエラーじゃなくて俺が間違ってたよ!
ということです。
#CakePHP ん〜cake schema はまだ使い物にならんなぁ。PRIMARY KEY CHAR(36)がINTにかわっちゃうし。posts_tagsのようなTableの作成に失敗するし
Twitter / slywalker: #CakePHP ん〜cake schema はまだ ...
上記の発言は私の多大なる誤解に基づいたものでした…
HABTMのJOIN Tableを
CREATE TABLE IF NOT EXISTS `posts_tags` ( `profile_id` int(11) NOT NULL, `tag_id` int(11) NOT NULL, PRIMARY KEY (`profile_id`,`tag_id`) );
今まで、こんな感じで作ってました。
ちゃんと動いてくれてたのは、CakePHPのお慈悲だったようで…
CakePHP モデルの相互に作用する全てのテーブル(join テーブルは除く)は、それぞれの列を一意に識別する単一フィールドのプライマリーキーが必要です。もし、posts_tags のような join テーブルの列で、単数形のプライマリーキーではないテーブルのモデルをお望みなら、テーブルに単一フィールドのプライマリーキーを追加することが CakePHP の規約です。
モデルとデータベースの規約 CakePHPの規約 CakePHPの基本原則 マニュアル 1.2 Collection The Cookbook
というわけでちゃんと書いてあります。
どうりで、cake schema run create が失敗するわけです^^;
アレ?PRIMARY KEY CHAR(36)がINTにかわっちゃうのは何だったんだろう???