Django原子事务无法回滚

uttx8gqw  于 2023-08-08  发布在  Go
关注(0)|答案(1)|浏览(124)

我试着做这样的事情:

with transaction.atomic():
    Model.objects.create(name="something")
    raise Exception

字符串
由于引发了异常,这应该意味着事务应该回滚,并且名称为“something”的Model不应该存在。
但是,如果我查询Model.objects.get(name="something"),对象仍然存在于数据库中。我是否没有正确理解交易?

lnxxn5zx

lnxxn5zx1#

我最近遇到了同样的问题,在我的情况下,这是因为我正在写入与"default"不同的数据库。我有一个自定义的数据库路由器,它根据请求选择数据库,但读和写都发生在同一个数据库上。

  • 注意:* 我的所有模型在请求期间使用相同的数据库。

在django文档中,必须通过向using块提供using="database_alias"来指定数据库:

database_alias = ... # Get the database alias by using the same logic as in the router
with transaction.atomic(using=database_alias):
    Model.objects.create(name="something")
    raise Exception

字符串

相关问题