postgres libpq:同步COPY神秘地取消"由于用户请求"

时间:2014-07-10 18:17:32

标签: postgresql libpq

我的应用程序使用libpq使用COPY API将数据写入Postgres。在超过900000次成功COPY +提交(每个包含一行,不要求)操作后,其中一个出现以下错误:

ERROR: canceling statement due to user request
CONTEXT: COPY [...]

我的代码从不调用PQcancel或相关的朋友,我认为这是因为同步使用libpq而我的应用程序不是多线程的。

  • libpq v8.3.0
  • Postgres v9.2.4

是否有任何合理的解释可能导致COPY被取消?升级libpq(正如我在更新版本的应用程序中所做的那样)是否会改善这种情况?

当报告此错误时,客户报告Postgres服务器可能已关闭,但我不相信,因为错误文本非常具体。

1 个答案:

答案 0 :(得分:1)

当您执行以下操作时会发出该错误:

  • 发送PQcancel
  • 使用pg_cancel_backend
  • psql(调用PQcancel
  • 中点击control-C
  • SIGINT发送到后端,例如kill -INTkill -2

我的初步答案不正确,声称以下内容也产生了同样的错误。他们没有;这些:

  • pg_terminate_backend
  • pg_ctl shutdown -m fast

会发出不同的错误FATAL: terminating connection due to administrator command