无法从postgresql中删除数据

时间:2013-06-07 19:08:03

标签: sql database postgresql delete-row sql-delete

我对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用户,我知道用户名确实存在,所以,我该如何删除它?

1 个答案:

答案 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作为标识符,以避免出现问题。这些都需要随时用双引号括起来。