我对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用户,我知道用户名确实存在,所以,我该如何删除它?
答案 0 :(得分:2)
有可能(由于缺乏信息而陷入黑暗中)你没有想到小写的名字。
首先阅读the manual about identifiers。
你得到了什么:
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
的混淆。错误消息会抱怨该名称,因为它不存在。
并且您不应该使用reserved words之类的user
作为标识符,以避免出现问题。这些都需要随时用双引号括起来。