我在CentOS 7.3上安装了C ++,Postgres和postgresql-devel。我也安装了libpqxx-4.0。
然后我创建了这个add_employee.cxx文件并将其基于"简短示例" here
#include <iostream>
#include <pqxx/pqxx>
int main(int, char *argv[])
{
pqxx::connection c("dbname=foobar user=jdoe password=smartpassword");
pqxx::work txn(c);
pqxx::result r = txn.exec(
"SELECT id "
"FROM Employee "
"WHERE name =" + txn.quote(argv[1]));
if (r.size() != 1)
{
std::cerr
<< "Expected 1 employee with name " << argv[1] << ", "
<< "but found " << r.size() << std::endl;
return 1;
}
int employee_id = r[0][0].as<int>();
std::cout << "Updating employee #" << employee_id << std::endl;
txn.exec(
"UPDATE EMPLOYEE "
"SET salary = salary + 1 "
"WHERE id = " + txn.quote(employee_id));
txn.commit();
}
我用它编译了它:
c++ add_employee.cxx -lpqxx -lpq
我跑了./a.out并看到了这个:
在抛出一个实例后终止调用 &#39; pqxx :: broken_connection&#39; what():致命:对等身份验证 用户&#34; foobar&#34;
失败了中止
我通常需要一个数据库角色的密码&#34; jdoe&#34;登录。如何解决错误?我想自动登录C ++程序。我没有对数据库进行无密码身份验证。有没有办法让这个C ++程序登录到Postgres数据库,尽管需要密码?
答案 0 :(得分:1)
我怀疑这与你的C ++代码没什么关系,而且更多的是你设置了服务器。
我记得,API访问始终通过网络进行,因此请确保pg_hba.conf
文件正确无误。
我认为测试有用的一种方法:从同一本地网络上的另一台机器访问。