我在使用libpqxx连接到QuestDB时遇到问题,我可以按照这里的说明使用postgresql客户端建立连接:https://questdb.io/docs/guidePSQL
但是,当我使用我的简单程序连接到QuestDB时,这或多或少是对标准的"get me started“程序进行了稍微修改:https://github.com/jtv/libpqxx
#include <iostream>
#include <pqxx/pqxx>
int main(){
try
{
pqxx::connection C(
"user=admin "
"hostaddr=127.0.0.1 "
"password=quest "
"dbname=qdb"
"port=8812 ");
std::cout << "Connected to " << C.dbname() << std::endl;
pqxx::work W{C};
pqxx::result R{W.exec("SELECT name FROM employee")};
std::cout << "Found " << R.size() << "employees:\n";
for (auto row: R)
std::cout << row[0].c_str() << '\n';
std::cout << "Doubling all employees' salaries...\n";
W.exec0("UPDATE employee SET salary = salary*2");
std::cout << "Making changes definite: ";
W.commit();
std::cout << "OK.\n";
}
catch (std::exception const &e)
{
std::cerr << e.what() << '\n';
return 1;
}
return 0;
}。。我得到一个错误:
无法连接到服务器:连接被拒绝服务器是否在主机"127.0.0.1“上运行并接受端口5432上的TCP/IP连接?
什么也可能使事情变得复杂,我在任何地方都找不到pg_hba.conf,这些仍然是PostgreSQL10版本中的东西吗?我有/usr/lib/postgresql/10,但没有配置文件。我也搜索了机器..什么也没找到。任何帮助都将不胜感激。
谢谢你
发布于 2020-07-03 16:36:53
libpqxx的官方文档指出:
连接字符串由用空格分隔的attribute=value对组成,例如"user=john password=1x2y3z4“。reference
您的连接字符串为:
pqxx::connection C(
"user=admin "
"hostaddr=127.0.0.1 "
"password=quest "
"dbname=qdb"
"port=8812 ");qdb后缺少一个空格,因此正确的连接字符串为:
pqxx::connection C(
"user=admin "
"hostaddr=127.0.0.1 "
"password=quest "
"dbname=qdb "
"port=8812 ");我刚试过,它对我来说很好。
另一方面,下面的SQL语句:
W.exec0("UPDATE employee SET salary = salary*2");将不起作用,UPDATE尚不支持 by QuestDB。您可以在官方文档here上找到有关SQL支持的更多详细信息。
https://stackoverflow.com/questions/62687971
复制相似问题