メイン CakePHP モデル(Model)
cakephp1.2でのPostgreSQLエラー。 | 投稿するにはまず登録を |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
| 投稿者 | スレッド |
|---|---|
| bubbkis | 投稿日時: 2008-1-11 20:21 |
Baker スタート ![]() ![]() 登録日: 2007-9-21 居住地: 投稿: 14 |
cakephp1.2でのPostgreSQLエラー。 Cakephp1.2でPostgreSQL8.2.4を使っていますが、
delete文を発行するとsyntax errorを吐きます。 $this->User->del($id); $this->User->deleteAll(array('1 = 1'), false); 以下、エラー文。 Warning (2): pg_query() [function.pg-query]: Query failed: ERROR: syntax error at or near ""user"" LINE 1: DELETE "User" FROM "Users" AS "User" ... ^ [CORE/cake/libs/model/datasources/dbo/dbo_postgres.php, line 123] Code | Context $sql = "DELETE "User" FROM "Users" AS "User" WHERE "User"."id" IN ('72', '73', '74', '75', '76', '77', '78', '79', '80', '81') " と、SQLの頭"DELETE"のすぐ後ろにaliasが入っています。 Postgresではdelete文にaliasがあるとエラー吐く仕様なんでしょうか? 仕方ないので、 "/cake/libs/model/datasources/dbo_source.php" function renderStatement() 内の 1249行目 return "DELETE {$alias} FROM {$table} {$this->alias}{$alias} {$joins} {$conditions}"; ↓ return "DELETE FROM {$table} {$this->alias}{$alias} {$joins} {$conditions}"; へ修正しました。 一応、これで動いています。 |
| shin1x1 | 投稿日時: 2008-1-12 8:28 |
Baker ユーザ ![]() ![]() 登録日: 2006-9-26 居住地: 投稿: 37 |
Re: cakephp1.2でのPostgreSQLエラー。 これは困りますね
![]() CakePHP1.2.0.6311 betaで変更された箇所ですね。 チケットが上がっていて、リポジトリでは修正されてるようです。 https://trac.cakephp.org/ticket/3806 |
| shun_w | 投稿日時: 2008-1-15 23:46 |
Baker スタート ![]() ![]() 登録日: 2006-8-9 居住地: 投稿: 6 |
Re: cakephp1.2でのPostgreSQLエラー。 svn At revision 6381.のソースを取得して試してみましたが、このエラーはまだそのままでした。
ちなみにうちではASも駄目だといわれます(PostgreSQL8.1) SQLログ: DELETE FROM "posts" AS "Post" WHERE "Post"."id" IN ('7') ERROR: syntax error at or near "AS" at character 21 さらに、dbo_source.phpのbuildColumn関数がMySQL専用のため、ACLやテストスイート用のテーブル作成時にもエラーが出ます。 一年半ぶりにcakePHPを触ってみているのですが、相変わらずMySQLでしか動かないようでがっかりしました。 開発チームはマルチDB対応の看板を下ろすべきですよねぇ。 |
| bubbkis | 投稿日時: 2008-1-16 1:09 |
Baker スタート ![]() ![]() 登録日: 2007-9-21 居住地: 投稿: 14 |
Re: cakephp1.2でのPostgreSQLエラー。 私もさっき、リビジョン6381をチェックアウトしました。
中身修正されてませんねぇ・・・ ついでに、まだエラー出る箇所ありました。 UPDATEも動きません。 https://trac.cakephp.org/ticket/3794 3794でチケット上がっていて修正されているようですが、 リビジョン6381ではまだエラー吐きます。 Query: UPDATE "staffs" AS "Staff" SET "Staff"."username" = 'bubbkis', "Staff"."password" = '123456', "Staff"."id" = '1', "Staff"."staff_name" = 'bubbkis' WHERE "Staff"."id" IN ('1') Warning (512): SQL Error: ERROR: column "Staff" of relation "staffs" does not exist LINE 1: UPDATE "staffs" AS "Staff" SET "Staff"."username" = 'bubbki... ^ [CORE/cake/libs/model/datasources/dbo_source.php, line 440] ちょっとこんな状況では1.2は使えないなぁ。 1.1系に戻します。 仕事にbeta版を使った私は甘すぎました。 |
| shin1x1 | 投稿日時: 2008-1-16 10:09 |
Baker ユーザ ![]() ![]() 登録日: 2006-9-26 居住地: 投稿: 37 |
Re: cakephp1.2でのPostgreSQLエラー。 trunkの方見てませんか?
branchesでは修正されているように見えます。 # 試してませんが。 https://trac.cakephp.org/browser/branches/1.2.x.x/cake/libs/model/datasources/dbo_source.php ちなみに1.2pre-beta+PostgreSQL8.[12]で開発しましたが DB 絡みは特に問題ありませんでした。 |
| bubbkis | 投稿日時: 2008-1-16 11:23 |
Baker スタート ![]() ![]() 登録日: 2007-9-21 居住地: 投稿: 14 |
Re: cakephp1.2でのPostgreSQLエラー。 あ。はい。trunkのほう見てました。
お恥ずかしい限りで・・・ たった今、branchesの方から持ってきて試してみましたら 問題なく動きました。 ありがとうございました。 |
| k1LoW | 投稿日時: 2008-2-20 20:17 |
Baker ユーザ ![]() ![]() 登録日: 2007-6-11 居住地: fukuoka 投稿: 33 |
Re: cakephp1.2でのPostgreSQLエラー。 どうやら現段階ではdelete()は使えるようになったようですが、deleteAll()はまだ使用できないようです。
問題はやはりdbo_source.phpの1263行目からのcaseのようです。 delete()の場合には$aliasが空白となるので問題ないようですが、deleteAll()の場合に微妙な動きをするようです。 自分なりにいろいろいじってみたのですが、現状修正ができませんでした。 |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
| 投稿するにはまず登録を | |




