-3

私は PostgreSQL を初めて使用するので、認識できない noob エラーが発生している可能性があります。このデータを削除できない理由を教えてください。

これが起こっていることです:

DELETE FROM userprofile WHERE user LIKE (SELECT User FROM User WHERE username LIKE 'testuser');
ERROR:  column "username" does not exist
LINE 1: ...file WHERE user LIKE (SELECT User FROM User WHERE username L...

私はdjangoユーザーを使用しているので、ユーザー名が存在することを知っているので、どうすれば削除できますか?

4

1 に答える 1

2

小文字の名前を考えていなかった可能性があります (情報が不足しているため、暗闇で突き刺します)。

識別子に関するマニュアルを読むことから始めます。

あなたは何を手に入れますか:

SELECT n.nspname, c.relname, a.attnum, a.attname
FROM   pg_class c
JOIN   pg_attribute a ON a.attrelid = c.oid
JOIN   pg_namespace n ON n.oid = c.relnamespace
WHERE  c.relname ilike 'user'
AND    NOT a.attisdropped  -- no dropped (dead) columns
AND    a.attnum > 0        -- no system cols
ORDER  BY 1,2,3

識別子の大文字化に注意してください。なんで?上記のマニュアルへのリンクに従ってください。

nameまた、列の とvalueこの列に格納されている を混同しているようです。名前が存在しないため、エラーメッセージは名前について不平を言っています。

また、目前のような問題を回避するために、識別子などの予約語を使用しないでください。userこれらは常に二重引用符で囲む必要があります。

于 2013-06-07T19:26:55.370 に答える