Tengo un problema para conectarme a QuestDB con libpqxx, puedo establecer una conexión usando el cliente postgresql según las instrucciones aquí: https://questdb.io/docs/guidePSQL
sin embargo, cuando voy a conectarme a QuestDB, usando mi programa simple, que es más o menos una versión ligeramente modificada del programa estándar "para empezar": 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; }.. me sale un error:
no se pudo conectar al servidor: conexión rechazada ¿El servidor se ejecuta en el host "127.0.0.1" y acepta conexiones TCP/IP en el puerto 5432?
lo que también complica las cosas posiblemente, es que no puedo encontrar pg_hba.conf en ninguna parte, ¿siguen siendo algo en la versión 10 de postgresql? tengo /usr/lib/postgresql/10 pero no hay archivos de configuración... y también busqué en la máquina... no encontré nada. cualquier ayuda sería muy apreciada.
gracias
La documentación oficial de libpqxx establece que:
La cadena de conexión consta de pares atributo=valor separados por espacios, por ejemplo, "usuario=juan contraseña=1x2y3z4". referencia
Su cadena de conexión es:
pqxx::connection C( "user=admin " "hostaddr=127.0.0.1 " "password=quest " "dbname=qdb" "port=8812 "); Le falta un espacio después de qdb , por lo que la cadena de conexión correcta es:
pqxx::connection C( "user=admin " "hostaddr=127.0.0.1 " "password=quest " "dbname=qdb " "port=8812 ");Lo acabo de probar y me funciona bien.
Por otro lado, la siguiente sentencia SQL:
W.exec0("UPDATE employee SET salary = salary*2"); No funcionará, UPDATE aún no es compatible con QuestDB. Puede encontrar más detalles sobre la compatibilidad con SQL en la documentación oficial, aquí .