.ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録

.検索

.メインメニュー

.フォーラムメニュー

.オンライン状況
10 人のユーザが現在オンラインです。 (8 人のユーザが フォーラム を参照しています。)

登録ユーザ: 0
ゲスト: 10

もっと...

.
.リンク集

メイン
   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のようです。

<?php
case 'delete':
    if (!empty(
$alias)) {
        
$aliases "{$this->alias}{$alias} {$joins} ";
    }
    return 
"DELETE {$alias} FROM {$table} {$aliases}{$conditions}";
break;
?>


delete()の場合には$aliasが空白となるので問題ないようですが、deleteAll()の場合に微妙な動きをするようです。


自分なりにいろいろいじってみたのですが、現状修正ができませんでした。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 


. .