-3

我对 PostgreSQL 很陌生,所以也许我遇到了一些我无法识别的菜鸟错误,所以请告诉我为什么我无法删除这些数据。

这是正在发生的事情:

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的 a混淆了。value错误消息抱怨名称,因为它不存在。

而且你永远不应该使用保留字user作为标识符来避免像手头这样的问题。这些都需要用双引号括起来。

于 2013-06-07T19:26:55.370 回答