8

参考 Django 文档中关于一个应用程序中的多个数据库的示例,

https://docs.djangoproject.com/en/dev/topics/db/multi-db/#an-example

“它也没有考虑事务与数据库利用策略的交互。”

我如何处理上述交互。

场景是这样的:

我使用 postgresql 作为我的数据库。我已经设置了一个副本,并希望对“auth”表的所有读取都转到副本。按照文档,我编写了一个数据库路由器。现在,每当我尝试登录我的应用程序时,都会引发以下错误。

DatabaseError: cannot execute UPDATE in a read-only transaction.

当 Django 尝试保存“last_login”时间时,就会发生这种情况。因为,在同一个视图中,它首先从副本中获取记录,然后尝试更新 last_login 时间。由于它发生在一个事务中,因此使用相同的数据库,即副本。

我该如何处理?

想法?

4

0 回答 0