C - "Relation does not exist"错误,仅适用于 libpq



我正在尝试运行此查询,以使用pqexec()(libpq)

从我的C代码中插入新行
INSERT INTO Users 
VALUES (( 
SELECT MIN(s.id) 
FROM generate_series(1,( 
SELECT GREATEST(MAX(Id) + 1,1) FROM Users 
 )) AS s(id) 
WHERE NOT EXISTS (SELECT 1 FROM Users WHERE Id = s.id)) 
 , 'Tester', 27) 
RETURNING Id;

它在我在psql终端中运行它时所需的功能,但是从c返回

Error executing query: ERROR:  relation "users" does not exist

我检查了连接状态,并使用我连接到终端的相同用户成功了。怎么找不到用户表?

编辑:添加C代码连接:

sprintf(connect_param,"host=address dbname=%s user=%s password=%s",
                                                    USERNAME, USERNAME, PASSWORD);
conn = PQconnectdb(connect_param);

查询:

sprintf(cmd, "INSERT INTO Users "
             "VALUES (( "
            "SELECT MIN(s.id) "
            "FROM generate_series(1,( "
            "SELECT GREATEST(MAX(Id) + 1,1) FROM Users "
            " )) AS s(id) "
            "WHERE NOT EXISTS (SELECT 1 FROM Users WHERE Id = s.id)) "
            " , '%s', %d) "
            "RETURNING Id;", Name, Age);
res = PQexec(conn,cmd);

我要扣除:

 Error executing query: ERROR:  relation "users" does not exist

当数据库找不到表(视图,或者Wathelse可以通过选择时),他给出了"关系"的名称)。原因可能是:

  • 表用户不存在。一些拼写错误
  • 您在错误的数据库中执行查询(其中未定义此表)
  • 您在错误的服务器中执行查询(如上)
  • 您在错误的架构中执行查询(如上)
  • 字符串从sprintf截断。

和类似。由于您从数据库中获得答案

,该连接效果很好

您的库链接链接问题。

gcc -I/usr/include/postgresql/ -L/usr/lib/postgresql/8.3/lib/ -lpq

相关内容

最新更新