Python 操作错误:游标“_django_curs<;id>&引用;不存在

Python 操作错误:游标“_django_curs<;id>&引用;不存在,python,django,postgresql,sentry,heroku-postgres,Python,Django,Postgresql,Sentry,Heroku Postgres,我们有一个由django、postgresql和heroku支持的在线商店web应用程序 对于一个特定的活动(你可以把它看作是一个需要购买的产品),我们已经成功销售了10000多份。然而,根据我们的哨兵报告,我们的一些用户遇到了这个错误。这些用户的通用规范为:;他们在购买之前都没有地址信息。通常,用户在注册后立即填写地址表。如果没有,他们需要在购买产品时填写表格并一起提交 这是跟踪的样子: OperationalError: cursor "_django_curs_14039868832742

我们有一个由django、postgresql和heroku支持的在线商店web应用程序

对于一个特定的活动(你可以把它看作是一个需要购买的产品),我们已经成功销售了10000多份。然而,根据我们的哨兵报告,我们的一些用户遇到了这个错误。这些用户的通用规范为:;他们在购买之前都没有地址信息。通常,用户在注册后立即填写地址表。如果没有,他们需要在购买产品时填写表格并一起提交

这是跟踪的样子:

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 
操作错误:光标“\u django\u curs\u 140398688327424\u 146”不存在
(66个附加帧未显示)
...
文件“store/apps/store\u main/templatetags/store\u form\u filters.py”,第31行,呈现形式
返回render_to_string('widgets/store_form_renderer.html',ctx)
文件“store/apps/store\u main/templatetags/store\u form\u filters.py”,第20行,在render\u小部件中
将render\u返回到\u字符串('widgets/store\u widget\u renderer.html',ctx)
文件“store/apps/store_main/widgets.py”,第40行,在渲染中
attrs=attrs)+“
操作错误:光标“\u django\u curs\u 140398688327424\u 146”不存在
因此,另一个常见的奇怪现象是,在失败之前,sql查询之间存在异常消息。您可以在下图中看到它:

如果它们有某种关联,我会加上它。也可能相关的是,出现此错误的用户是在批量邮寄后立即尝试购买活动的用户。因此,广泛的交通可能是原因,但我们也不确定

我们问了Heroku这个问题,因为他们是博士后的东道主,但他们也没有任何线索


我知道这个错误的正式原因是在提交后试图到达游标。由于它在事务处理后被销毁,所以尝试访问它会导致此错误,但在我们的场景中我看不到这一点。我们没有以任何方式接触光标。我错过了什么?什么可能导致这种错误?如何预防?如果您有任何想法,我们将不胜感激。

您出错的原因可能是您在模型中添加了字段,但忘记了进行迁移和迁移


看看这个答案:

如果您正在使用django pytest,并且启用了优化
——重用db
,并且在测试运行之间进行了db迁移,那么您需要重新创建db表

pytest --create-db

这里有点像缓存。您可以分享有关您的生产环境的更多详细信息吗?在我的例子中,我忘记将新应用添加到settings.py文件,然后迁移。出于习惯,我只是执行迁移,当然,迁移不包括新应用的型号。