当前位置: 首页 > 知识库问答 >
问题:

Postgres:列不存在[重复]

丁星火
2023-03-14

我一直在尝试将我的数据库从MySql迁移到Postgres,但我遇到了一个大问题,似乎找不到解决方法。

现在,在我访问数据库并获取数据的C#代码中,我向数据库发送以下查询:

SELECT * FROM users WHERE 'Username'='Eevee';

我试着在列名周围没有引号的情况下查询它,但这只会让我得到

ERROR:  column "username" does not exist
LINE 1: SELECT * FROM users WHERE Username='Eevee'
                                  ^
HINT:  Perhaps you meant to reference the column "users.Username".

我的一个朋友暗示会发生这种情况,因为Postgres让引号之外的所有内容都是小写的,但我们又回到了另一个问题。

我是Postgres的新手,我正在努力学习这一点,但这是一堵我似乎无法修好自己的硬墙。

提前谢谢!

共有1个答案

秦德海
2023-03-14

最好不要使用大小写混合的列或表。如果您碰巧有一个标识符名称,则应使用双引号而不是单引号将标识符名称括起来,单引号用于字符串文字:

SELECT * FROM users WHERE "Username" = 'Eevee'

注意:在第一种情况下,您只是比较了两个字符串'Username''Eevee',这两个字符串自然不相似。因此,您得到了0行响应。

 类似资料:
  • 我试图使用它们的共同点将两个表连接在一起,但是我一直在找不到特定的列,我可以清楚地看到该列在那里。

  • 我正在运行一个简单的select查询: 并得到以下错误: 错误:列return_part_i.cntrctrmntnind不存在第1行:从return_part_i.cntrctrmntnind中选择return_part_i.cntrctrmntnind…^提示:也许你想引用“return_part_i.cntrctrmntnind”一栏。SQL状态:42703字符:8 我尝试了使用和不使用表标

  • 是否有用于创建数据库的模拟? 背景:我正在编写一个脚本来在未知系统上自动设置PostgreSQL中的模式。我不确定数据库(甚至是模式的一部分)是否已经部署,所以如果某些结构已经存在,我想将我的代码结构为不会失败(或者理想情况下甚至显示错误)。我想将阻止我创建数据库的错误(因此中止未来的模式更改,因为它们不起作用)与此错误区分开来。

  • 产生以下错误: 这些尝试是以普通用户的身份进行的。将它们作为root用户进行尝试会得到完全相同的结果。我已经在OS X上通过自制安装了postgres,并且我已经阅读了多次说明。

  • 我尝试创建一个名为Postgres的用户。我通过重新安装了postgres。我可以用 当我运行时,仍然会出现错误:

  • 我正在使用postgres与docker和它有麻烦。我成功地docker-compose-build 当我在命令下面运行时,它工作得很好。psql按预期以my_username用户开始。我可以看到我的数据库,\l,\dt命令工作正常。 docker-compose exec db psql--username=my_username--dbname=my_database 苏波斯特格雷斯 crea