如果排除lock语句会发生什么?
这就是pgdb.py中发生的事情:
def rollback(self): """Roll back to the start of any pending transaction.""" if self._cnx: if self._tnx: self._tnx = False try: self._cnx.source().execute("ROLLBACK") except Exception: raise OperationalError("can't rollback") else: raise OperationalError("connection has been closed")
所以我建议你更换你的 connections[instance].rollback() 致电:
connections[instance].rollback()
connections[instance]._tnx = False connections[instance]._cnx.source().execute("ROLLBACK")
看看是否能为您提供更丰富的错误消息(pgdb中的except子句是贪婪的)。
另外:检查Postgresql日志,它可能已经记录了原因!
你在哪里开始交易?我确实看到了一个COMMIT,但没有看到BEGIN或START TRANSACTION。
你正在寻找错误的地方。 PostgreSQL日志对你正在做什么说什么?