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

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2014/04/07 15:08:01
  • 終了:2014/04/08 10:41:58
id:doogie

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

ベストアンサー

id:snow0214 No.1

snow0214回答回数470ベストアンサー獲得回数1162014/04/07 18:56:20

ポイント300pt

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

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

id:doogie

insetはされています。データ自体は登録されているので。
insetの後に何か処理されてるのでしょうか。

教えていただいたサイトは、質問前に見てましたが原因はわかりませんでした。

2014/04/07 19:50:31

その他の回答(0件)

id:snow0214 No.1

snow0214回答回数470ベストアンサー獲得回数1162014/04/07 18:56:20ここでベストアンサー

ポイント300pt

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

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

id:doogie

insetはされています。データ自体は登録されているので。
insetの後に何か処理されてるのでしょうか。

教えていただいたサイトは、質問前に見てましたが原因はわかりませんでした。

2014/04/07 19:50:31
id:doogie

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

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません