人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

CakePHP2、PostgresqlでSaveメソッドでInsertをする際に、「Error: SQLSTATE[42P01]: Undefined table: 7 ERROR: リレーション"{テーブル名}_id_seq"は存在しません」というエラーメッセージが表示されます。データ自体は登録されています。試しにqueryメソッドでInsert文を発行すると、正常に登録されエラーは発生しません。CakePHPのSaveメソッドではInsertの後に何か処理を行っているのでしょうか?

環境:Windows7、xampp、CakePHP2.4、Postgresql8.3.8、PHP5.4

●質問者: doogie
●カテゴリ:コンピュータ ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

質問者から

ちなみに、モデル名とテーブル名は異なります。
あと、テーブルのプライマリーキーは2つの項目です。
何かIndexと関係ありそうなのですが・・、よく解りません。


1 ● snow0214
●300ポイント ベストアンサー

saveメソッドの動作については下記ブログに詳しいです。
http://blog.xao.jp/blog/cakephp/making-thorough-a-study-of-model-save-method/

queryメソッドに比べて様々な処理を行っていますが、insertが実行されていないとしたら、16番以前の処理で弾かれている可能性が高いです。
タイムスタンプやバリデーションに問題はありませんか。


doogieさんのコメント
insetはされています。データ自体は登録されているので。 insetの後に何か処理されてるのでしょうか。 教えていただいたサイトは、質問前に見てましたが原因はわかりませんでした。

質問者から

エラーの原因は複合主キーでした。CakePHPでは複合主キーに対応していないみたいなので、queryメソッドでSQL直書きで対応することにします。
有難うございました。


関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ