2012-11-21 18 views
5

私はpostgresqlで簡単な更新クエリを作成しようとしています。ブール値や列型がないので、私は実際にエラーを理解していません。postgresql UPDATEエラー "エラー:タイプブール型の入力構文が無効です:"

cat=> UPDATE categories SET epekcategoryid='27af8b1e-c0c9-4084-8304-256b2ae0c8b2' and epekparentcategoryid='root' WHERE categoryId='281' and siteid='0' and categoryparentid='-1'; 
ERROR: invalid input syntax for type boolean: "27af8b1e-c0c9-4084-8304-256b2ae0c8b2" 
LINE 1: UPDATE categories SET epekcategoryid='27af8b1e-c0c9-4084-830... 

テーブルの設定:

cat=> \d categories; 
       Table "public.categories" 
     Column  |   Type   | Modifiers 
----------------------+-----------------------+----------- 
categoryid   | character varying(32) | 
categoryname   | text     | 
siteid    | integer    | 
categoryparentid  | character varying(32) | 
status    | integer    | default 0 
epekcategoryid  | text     | 
epekparentcategoryid | text     | 
categorylevel  | character varying(37) | 
categoryidpath  | character varying(37) |
+0

'where categoryId = '281'、siteid = 0、categoryp arentid = ' - 1'; ' – wildplasser

+0

UPDATEカテゴリSET epekcategoryid =' 27af8b 'とepekparentcategoryid =' root 'WHERE categoryId =' 281 '、siteid = 0、categoryparentid =' - 1 ';いずれも動作していません – themihai

答えて

21

試してください:あなたがいない "AND" で、 "," とSET一部のフィールドを区切る必要があります

UPDATE categories 
SET epekcategoryid='27af8b1e-c0c9-4084-8304-256b2ae0c8b2', 
    epekparentcategoryid='root' 
WHERE categoryId='281' 
    and siteid='0' 
    and categoryparentid='-1'; 

ここ はログです

+2

よくある間違いです。 UPDATEクエリの 'SET'部分の中で' AND'を使います。このような異常なエラーが発生します。 – pyrocumulus

+0

mysqlは悪い教師でした:)しかし、ちょっと変わって、SETの後に "AND"を使用しませんが、 "WHERE"の後に使用します。 – themihai

+4

@mihaiあなたはそれについて考えるならば、それは不思議ではありません。 「AND」は演算子です。 '+'、 '-'、' * 'と同様です。 'WHERE'節では' 3 + 5'のように 'true AND false'ですが、' SET'では変わった 'var1 = true AND var2 = 3'になります。 –

関連する問題