Django + Postgres:"当前事务被中止,命令被忽略,直到事务块结束"

Ram*_*hum 71 django postgresql

我已经开始研究Django/Postgres网站了.有时我工作manage.py shell,并意外地做一些导致错误的数据库操作.然后我根本无法执行任何数据库操作,因为对于我尝试执行的任何数据库操作,我收到错误:

current transaction is aborted, commands ignored until end of transaction block
Run Code Online (Sandbox Code Playgroud)

我目前的解决方法是重新启动shell,但我应该找到一种方法来解决这个问题而不放弃我的shell会话.

(我读过这个这个,但他们不给什么就从壳做可操作的指导.)

Vse*_*kin 112

你可以试试这个:

from django.db import connection
connection._rollback()
Run Code Online (Sandbox Code Playgroud)

可以在此处找到有关此问题的更详细讨论

  • 这个解决方案不适合我.即使在回滚事务时,我也无法与数据库进行*任何*交互.我发现了另一种解决方法,请参阅我的回答. (4认同)
  • 如果 _rollback 不适合你,还有 `connection.close()` (@ifischer) (2认同)

yve*_*ess 25

有时这种情况发生在我身上,往往是失踪的

manage.py migrate 
Run Code Online (Sandbox Code Playgroud)

要么

manage.py syncdb
Run Code Online (Sandbox Code Playgroud)

如此处所述

如果你的models.py中有一个schemamigration等待,那么反过来也会发生这种情况.在南方,您需要使用更新架构.

manage.py schemamigration mymodel --auto
Run Code Online (Sandbox Code Playgroud)


Ign*_*rez 13

检查一下

快速回答通常是通过添加以下命令打开数据库级自动提交:

'OPTIONS': {'autocommit': True,}
Run Code Online (Sandbox Code Playgroud)

到数据库设置.