- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当代码在 transaction.atomic 块中执行并引发异常时,数据库处理程序被标记为需要回滚。如果仍然在该 transaction.atomic 块中执行后续查询,则会引发以下错误:
TransactionManagementError: An error occurred in the current transaction. You can't execute queries until the end of the 'atomic'
def someview(request):
with transaction.atomic():
// do some things
instance = SomeModel.objects.create(...)
// some other db queries
@receiver(post_save, sender=SomeModel)
def non_critical_side_effect(
sender, instance, created, raw, using, update_fields, **kwargs
):
try:
// some query that causes a database error
SomeModelLog.objects.create(some_non_none_field=None)
except IntegrityError:
//notify ourselves, go on
pass
最佳答案
如果您使用的是 django.db.transaction.atomic
上下文管理器并被 TransactionManagementError 难倒,您可以通过检查 exc_value
的值来确定根本原因。当needs_rollback
设置为 True
在 django.db.transaction.Atomic.__exit__
.这应该是提示需要回滚事务的异常。
为了首先避免这个错误,我采用了两种方法:
transaction.atomic
中包装大块代码transaction.atomic
块,确保该块中任何可能失败而不需要回滚整个事务的部分都包含在它们自己的子事务中。 def someview(request):
with transaction.atomic():
// do some things
SomeModel.objects.create(invalid_field=123)
@receiver(post_save, sender=SomeModel)
def non_critical_side_effect(
sender, instance, created, raw, using, update_fields, **kwargs
):
try:
with transaction.atomic():
// some query that causes a database error
except IntegrityError:
// notify ourselves, go on
pass
关于django - TransactionManagementError 隐藏根异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45890610/
当代码在 transaction.atomic 块中执行并引发异常时,数据库处理程序被标记为需要回滚。如果仍然在该 transaction.atomic 块中执行后续查询,则会引发以下错误: Tran
我在 Django 的 transaction.atomic block 中运行以下代码。 @transaction.atomic() def test(): a.save() sid =
我有一个与 django 的用户和 UserInfo 一对一的字段。我想订阅用户模型上的 post_save 回调函数,这样我也可以保存 UserInfo。 @receiver(post_save,
我在运行测试时遇到了问题,我一开始运行测试就收到 TransactionManagementError。我尝试了各种不同的测试,但都遇到了这个错误: .ve/lib/python2.7/site-pa
代码崩溃 @transaction.atomic def cancel_one(o_id): order= Order.objects.select_for_update().get(id=o
我在一个大型项目中使用 django。 我从模型的 save 内部调用 celery task,该模型调用一个方法,该方法在循环中调用另一个方法。即: celery task --> function
我正要问一个问题并在发布之前找到了解决方案 :) 问题: 我正在尝试设置 django-cms对于一个简单的应用程序,当我尝试在前端编辑页面时遇到了 TransactionManagementErro
将我的项目从 django 1.5.1 升级到 1.6.5 时,我遇到了这个奇怪的问题。 This is forbidden when an 'atomic' block is active. 我知道
我正尝试将 HTSQL 用于我的一个 Django 项目。为此,我遵循了给定的程序 HERE用于提供 HTSQL/Django 需求。然后我从 HERE 克隆了 HTSQL 存储库以尝试其中的示例/演
这里是 Django 新手。我正在尝试为我开发的一个简单 API 实现单元测试。您可以在下面找到我的测试实现,它运行良好: from django.test import TestCase from
我在尝试保存 Django User 模型实例时遇到 TransactionManagementError,并且在其 post_save 信号中,我正在保存一些将用户作为外键的模型。 上下文和错误与这
将 Django 用于在后台执行作业的小型应用程序(主要是 cron 样式,但也有用户启动)。 免责声明:这是我第一次遇到 celeryd,到目前为止的设置来自文档和示例 我正在使用 Django 1
当我使用 python manage.py migrate manage 进行迁移时(是的,它是 Django 1.8,我无法更改它:/),迁移(我测试过的每一个)总是以相同的错误失败: django
我是一名优秀的程序员,十分优秀!