,该连接效果很好
我正在尝试运行此查询,以使用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