python - 操作错误 : cursor "_django_curs_<id>" does not exist

标签 python django postgresql sentry heroku-postgres

我们有一个由 django、postgresql 和 heroku 提供支持的在线商店网络应用程序。

对于特定的事件(您可以将事件视为要购买的产品),我们已成功售出 10,000 份以上。然而,根据我们的 Sentry 报告,我们的一些用户遇到了这个错误。这些用户的共同规范是;他们都没有购买前的地址信息。通常,用户在注册后立即填写地址表。如果他们不这样做,他们需要在购买产品时填写表格并一起提交。

轨迹是这样的:

OperationalError: cursor "_django_curs_140398688327424_146" does not exist

(66 additional frame(s) were not displayed)
...
  File "store/apps/store_main/templatetags/store_form_filters.py", line 31, in render_form
    return render_to_string('widgets/store_form_renderer.html', ctx)
  File "store/apps/store_main/templatetags/store_form_filters.py", line 20, in render_widget
    return render_to_string('widgets/store_widget_renderer.html', ctx)
  File "store/apps/store_main/widgets.py", line 40, in render
    attrs=attrs) + "<span class='js-select-support select-arrow'></span><div class='js-select-support select-arrow-space'><b></b></div>"

OperationalError: cursor "_django_curs_140398688327424_146" does not exist 

所以另一个奇怪的常见事情是,在失败之前的 sql 查询之间有异常消息。您可以在下图中看到它:

Exception while resolving variable

如果它们有某种关联,我会添加它。也可能相关的是,出现此错误的用户是在批量邮寄后立即尝试购买事件的用户。因此,大量流量可能是原因,但我们也不确定。

我们向 Heroku 询问了这个问题,因为他们正在托管 postgres,但他们也没有任何线索。

我知道这个错误的正式原因是在提交后试图到达光标。因为它在交易后被销毁,试图到达它会导致这个错误,但我在我们的场景中没有看到这个。我们没有以任何方式触摸光标。我错过了什么?什么可能会产生这个错误?如何预防?任何想法将不胜感激。

最佳答案

您出错的原因可能是您将字段添加到模型而忘记了 makemigrations 和 migrate。

看看这个答案:When in run test cases then I will get this error: psycopg2.OperationalError: cursor "_django_curs_140351416325888_23" does not exist

关于python - 操作错误 : cursor "_django_curs_<id>" does not exist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52048778/

相关文章:

sql - 使用最后已知位置更新?

java - Java (Scala) 中此散列代码的等效 SQL 代码是什么

python - 闲置一段时间后的性能

python - 身份验证网页抓取问题

node.js - 用于 postgresql 全文搜索的 Sequelize 数据类型

python - 同行重置 Django 连接

ajax - 如何在 Django View 中解析嵌套的 json ajax 对象?

javascript - 未找到名称为 'undefined' Botkit + rasa_NLU 的项目

python - pydev - 如何避免将子目录添加到 python 路径以修复 Unresolved 导入问题

python - ImportError : No module named grappellidjango. 贡献