相关疑难解决方法(0)

不能简单地使用PostgreSQL表名("关系不存在")

我正在尝试运行以下PHP脚本来执行简单的数据库查询:

$db_host = "localhost";
$db_name = "showfinder";
$username = "user";
$password = "password";
$dbconn = pg_connect("host=$db_host dbname=$db_name user=$username password=$password")
    or die('Could not connect: ' . pg_last_error());

$query = 'SELECT * FROM sf_bands LIMIT 10';
$result = pg_query($query) or die('Query failed: ' . pg_last_error());
Run Code Online (Sandbox Code Playgroud)

这会产生以下错误:

查询失败:错误:关系"sf_bands"不存在

在所有的例子中,我可以找到有人得到错误的地方,说明关系不存在,这是因为他们在表名中使用大写字母.我的表名没有大写字母.有没有办法查询我的表而不包括数据库名称,即showfinder.sf_bands

php sql postgresql quoted-identifier

157
推荐指数
8
解决办法
32万
查看次数

PostgreSQL"列不存在"但实际上它确实存在

我正在编写一个Java自动构建和运行SQL查询的应用程序.对于许多表我的代码工作正常,但在某个表上它会因抛出以下异常而卡住:

Exception in thread "main" org.postgresql.util.PSQLException: ERROR: column "continent" does not exist
  Hint: Perhaps you meant to reference the column "countries.Continent".
  Position: 8
Run Code Online (Sandbox Code Playgroud)

已运行的查询如下:

SELECT Continent
FROM network.countries
WHERE Continent IS NOT NULL
AND Continent <> ''
LIMIT 5
Run Code Online (Sandbox Code Playgroud)

这实质上5从列中返回非空值.

我不明白为什么我在pgAdmin 4中明显地出现"列不存在"错误.我可以看到有一个名称Network包含表的模式countries,该表有一个名称Continent与预期一样的列.

由于应用程序本身检索了所有列,模式和表名称,我认为没有拼写或语义错误,为什么PostgreSQL会导致问题呢?在pgAdmin4中运行查询也不使用建议countries.Continent的工作.

我的PostgreSQL版本是迄今为止的最新版本:

$ psql --version
psql (PostgreSQL) 9.6.1
Run Code Online (Sandbox Code Playgroud)

如何成功运行查询?

sql postgresql quoted-identifier

9
推荐指数
3
解决办法
3万
查看次数

postgres - 从现有表中选择* - psql表不存在表

新鲜的postgres安装,db'test',表'Graeber'是从另一个程序创建的.

我想看看'Graeber'表的内容.当我连接到数据库并尝试选择'Graeber'的内容时,应用程序告诉我:ERROR: relation "graeber" does not exist.

看截图:

在此输入图像描述

这有什么不对?

postgresql

8
推荐指数
2
解决办法
1万
查看次数

postrSQL中的currval函数抱怨"列不存在"

我试图使用PostgreSQL的currval函数来返回一个名为的表的最后插入行id Concept. Concept有一个串行主键调用,cid并有一个自动生成的序列调用Concept_cid_seq.

我尝试以下语句并得到一个错误:

SELECT currval("Concept_cid_seq");
ERROR:  column "Concept_cid_seq" does not exist
LINE 1: SELECT currval("Concept_cid_seq");
                       ^

********** Error **********

ERROR: column "Concept_cid_seq" does not exist
SQL state: 42703
Character: 16
Run Code Online (Sandbox Code Playgroud)

但是当我运行查询时:

SELECT * from "Concept_cid_seq";
Run Code Online (Sandbox Code Playgroud)

我得到一个有一行的表(正如我所料)显示了像last_value,start_value等列...

我在这里错过了什么?我是否将错误的信息传递给了currval?为什么说'专栏不存在?'

postgresql

6
推荐指数
1
解决办法
3118
查看次数

错误:列不存在

我已经能够将PostgreSQL链接到java.我已经能够显示表中的所有记录,但是我无法执行删除操作.

这是我的代码:

con = DriverManager.getConnection(url, user, password);
String stm = "DELETE FROM hostdetails WHERE MAC = 'kzhdf'";
pst = con.prepareStatement(stm);
pst.executeUpdate(); 
Run Code Online (Sandbox Code Playgroud)

请注意,MAC是一个字符串字段,用大写字母书写.该字段确实存在于表中.

我得到的错误:

严重:错误:列"mac"不存在

sql postgresql jdbc quoted-identifier

4
推荐指数
1
解决办法
3229
查看次数

标签 统计

postgresql ×5

quoted-identifier ×3

sql ×3

jdbc ×1

php ×1