gpt4 book ai didi

c++ - libpqxx:连接进程终止后如何重新连接到 Postgresql 数据库

转载 作者:太空狗 更新时间:2023-10-29 12:31:21 25 4
gpt4 key购买 nike

我通过 libpqxx 实例化了一个 PostgreSQL 连接。我查询数据库并得到正确的响应。之后我尝试了以下错误情况:创建 pqxx::connection 实例后,我暂停我的程序,从 Linux 的命令 shell 手动终止 Postgre 的连接进程并恢复程序。它一直持续到它尝试创建新事务 pqxx::work 并抛出 pqxx::broken_connection。我处理了这个异常并尝试通过调用 pqxx::connection::activate() 重新连接,但抛出了另一个 pqxx::broken_connection。如何在不实例化另一个 pqxx::connection 的情况下重新连接到 DB?

附言重新激活不受抑制。我使用标准连接类型 -

namespace pqxx
{
typedef basic_connection<connect_direct> connection;
}

最佳答案

好的,没有人回答。我注意到,在连续多次调用 pqxx::connection::activate 后我手动终止连接背后的进程后,它会重新连接,所以这是我的解决方法。

class dbconnection : public pqxx::connection
{
public:
dbconnection(std::string options) : pqxx::connection(options) { };

void reconnect()
{
static int times = 0;
try
{
times++;
if(!this->is_open())
{
this->activate();
}
times = 0;
}
catch(const pqxx::broken_connection & e)
{
if(times > 10)
{
times = 0;
return;
}
this->reconnect();
}
};
};

每次捕获到 pqxx::broken_connection 后,我都会调用 dbconnection::reconnect。让我知道您是否有更好的解决方案?

关于c++ - libpqxx:连接进程终止后如何重新连接到 Postgresql 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26144212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com