CakePHP 1.1の話。
AテーブルとBテーブルの外部キーのみからできるCテーブルを作成して(多対多の関係で)、そこにプライマリキーは必要なかったのでModelファイルで$primarykeyを設定していませんでした(DB的には両方ともAテーブル、Bテーブルの外部キーの両方をプライマリキーに設定してた)。
それで、データをインサートするところで、ちゃんとインサートがされたか自動的にチェックされるらしく、そのときに実行されるSQLが
SELECT COUNT(id) AS count FROM Cテーブル WHERE id = Bテーブルにインサートされたid
となってしまい、これはどうしたことだ!と。Cテーブルにはidカラムはないので、当然エラーになるわけです。
// CテーブルのModelクラス
$primarykey = null;
とかやってみたけど、やはり違うようだし、まあフレームワークだから決まりは守れということかと観念して、Cテーブルにもidを設定しました(まったく使わないのだけれど)。まあ色々と勉強になりますね〜。便利だけど癖が強いのがフレームワークだから、あんまりイライラせずにじっくり取り組みます。