【问题标题】:cant delete data from postgresql无法从 postgresql 中删除数据
【发布时间】:2023-03-21 07:55:02
【问题描述】:

我对 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 用户,我知道用户名确实存在,那么,我怎样才能将其删除?

【问题讨论】:

  • 所以你的column "username" does not exist。你的问题到底是什么?表定义,PostgreSQL 版本?
  • 我是 django 用户,用户名确实存在,我想知道为什么它没有被删除
  • 表定义对于这个问题是必不可少的
  • 表是什么?我是自学成才,对 PostgreSQL 很陌生,事实上,我在学习是因为在工作中我必须使用它,而不是因为我研究过它
  • 那么您真的需要从阅读手册中的基础知识开始。我提供了一些链接。

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


【解决方案1】:

您可能没有想到小写名称。

从阅读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 wordsuser 作为标识符来避免像手头这样的问题。任何时候都需要用双引号括起来。

【讨论】:

  • SELECT n.nspname, c.relname, a.attnum, a.attname dbou78dfpdee3q-> FROM pg_class c dbou78dfpdee3q-> 加入 pg_attribute a ON a.attrelid = c.oid dbou78dfpdee3q-> 加入 pg_namespace n ON n.oid = c.relnamespace dbou78dfpdee3q-> WHERE c.relname ilike 'user' dbou78dfpdee3q-> 而不是 a.attisdropped dbou78dfpdee3q-> AND a.attnum > 0 dbou78dfpdee3q-> 按 1、2、3 排序; nsp 名称 |相对名称 |联系人 | attname ---------+---------+--------+--------- (0 行)
  • @Sascuash:我得到 0 行,根本没有像“user”或“User”或“USER”这样的表。无论哪种方式,永远不要使用 user 作为表名,按照我提供的链接。
  • 嗯。刚刚给stackoverflow.com/q/16985083/398670写了一个非常相似的回复。我已经厌倦了人们重复他们的问题......
  • @CraigRinger:是的,这很累。我需要提醒自己,在我所在的地区,我认为理所当然的许多事情对于新来者来说仍然是新的和令人困惑的——并且要有耐心,这对我来说是困难的部分。 :)
  • @ErwinBrandstetter 呵呵。 LEGO 行积木实际上是解释INNERLEFT OUTERRIGHT OUTERFULL OUTER 连接的相当不错的媒介。
猜你喜欢
  • 1970-01-01
  • 2019-12-13
  • 1970-01-01
  • 2010-09-08
  • 2018-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多