我收到了很多错误的信息:

"DatabaseError: current transaction is aborted, commands ignored until end of transaction block"

作为Django项目的数据库引擎,从python-psycopg改为python-psycopg2。

代码保持不变,只是不知道这些错误来自哪里。


当前回答

在Flask中,你只需要写:

curs = conn.cursor()
curs.execute("ROLLBACK")
conn.commit()

附注:文档在这里https://www.postgresql.org/docs/9.4/static/sql-rollback.html

其他回答

你只需要跑

rollback;

在PostgreSQL中,就是这样!

我也有这个错误,但它掩盖了另一个更相关的错误消息,代码试图在100个字符的列中存储125个字符的字符串:

DatabaseError: value too long for type character varying(100)

我必须调试代码才能显示上面的消息,否则就会显示

DatabaseError: current transaction is aborted

只需使用回滚

示例代码

try:
    cur.execute("CREATE TABLE IF NOT EXISTS test2 (id serial, qa text);")
except:
    cur.execute("rollback")
    cur.execute("CREATE TABLE IF NOT EXISTS test2 (id serial, qa text);")

这是一个糟糕的sql执行问题,它不允许其他查询执行,直到前一个查询被挂起/回滚。

在PgAdmin4-4.24中有一个回滚选项,可以尝试一下。

您可以通过“set_isolation_level(0)”禁用事务