我的应用程序使用libpq使用COPY API将数据写入Postgres。在超过900000次成功COPY +提交(每个包含一行,不要求)操作后,其中一个出现以下错误:
ERROR: canceling statement due to user request
CONTEXT: COPY [...]
我的代码从不调用PQcancel或相关的朋友,我认为这是因为同步使用libpq而我的应用程序不是多线程的。
是否有任何合理的解释可能导致COPY被取消?升级libpq(正如我在更新版本的应用程序中所做的那样)是否会改善这种情况?
当报告此错误时,客户报告Postgres服务器可能已关闭,但我不相信,因为错误文本非常具体。
答案 0 :(得分:1)
当您执行以下操作时会发出该错误:
PQcancel
pg_cancel_backend
psql
(调用PQcancel
)SIGINT
发送到后端,例如kill -INT
或kill -2
。我的初步答案不正确,声称以下内容也产生了同样的错误。他们没有;这些:
pg_terminate_backend
pg_ctl shutdown -m fast
会发出不同的错误FATAL: terminating connection due to administrator command
。