相关疑难解决方法(0)

PSQLException:当前事务被中止,命令被忽略直到事务块结束

我在JBoss 7.1.1 Final的server.log文件中看到以下(截断的)stacktrace:

Caused by: org.postgresql.util.PSQLException: 
ERROR: current transaction is aborted, commands ignored until end of 
transaction block

at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2102)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1835)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:512)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:374)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:302)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.6.0_23]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [rt.jar:1.6.0_23]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [rt.jar:1.6.0_23]
at java.lang.reflect.Method.invoke(Method.java:597) [rt.jar:1.6.0_23]
at org.postgresql.ds.jdbc23.AbstractJdbc23PooledConnection$StatementHandler.invoke(AbstractJdbc23PooledConnection.java:455)
at $Proxy49.executeUpdate(Unknown Source)   at org.jboss.jca.adapters.jdbc.WrappedStatement.executeUpdate(WrappedStatement.java:371)
at org.infinispan.loaders.jdbc.TableManipulation.executeUpdateSql(TableManipulation.java:154) [infinispan-cachestore-jdbc-5.1.2.FINAL.jar:5.1.2.FINAL]
... 154 more
Run Code Online (Sandbox Code Playgroud)

检查Postgres日志文件会显示以下语句:

STATEMENT:  SELECT count(*) FROM ISPN_MIXED_BINARY_TABLE_configCache
ERROR:  current transaction is aborted, commands ignored until end of transaction block
STATEMENT:  CREATE TABLE ISPN_MIXED_BINARY_TABLE_configCache(ID_COLUMN VARCHAR(255) NOT …
Run Code Online (Sandbox Code Playgroud)

postgresql jboss infinispan

132
推荐指数
9
解决办法
20万
查看次数

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

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

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

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

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

django postgresql

71
推荐指数
3
解决办法
3万
查看次数

正确使用 psycopg2 序列化

我正在访问带有序列化事务隔离的 postgresql 表。我正在做这样的事情(使用现有的 psycopg2 连接conn和该连接中的光标,cur

while True:
  try:
    cur.execute(query)
    break
  except TransactionRollbackError:
    [sleep a little]
    continue
  except Exception:
    [handle error here]
Run Code Online (Sandbox Code Playgroud)

这样做的目的是在序列化争用的情况下重试。现在,这在大部分时间都可以正常工作。但我经常在TransactionRollbackError陷阱中进行一次迭代后收到此错误:

current transaction is aborted, commands ignored until end of transaction block. 显然,以这种方式旋转以避免序列化争用是不合适的?我应该以不同的方式做这件事吗?

一些注意事项:我正在使用不同的进程访问表(它们都是相同的并且做同样的事情:选择、增加和更新/插入到表中。)这些进程中的每一个都有自己的连接conn,它们不共享一个联系。

另一个注意事项:似乎在通过TransactionRollbackError异常块一次之后,在 while 循环的下一次旋转中,它最终在Exception异常块中结束。

还有一个注意事项:同时运行的进程数对错误的频率有直接影响,因为更多的进程往往会产生更多的错误。因此,存在某种争论。我的印象是使用带重试的序列化事务隔离(如在我的演示代码中)可以解决这个问题。

python postgresql psycopg

5
推荐指数
1
解决办法
1437
查看次数

TransactionManagementError?

您好,感谢您的阅读.我正在Django做一个快速站点,我在原始SQL中有一个非常简单的更新语句,我正在使用Postgres数据库.这里的东西正在制造麻烦:

from django.http import HttpResponse
from django.db import connection, transaction

def rsvp_update(request, rsvp_id, status):
  cursor = connection.cursor()
  cursor.execute("UPDATE public.rsvp SET status=%s WHERE rsvp_id = %s", [status, rsvp_id])
  transaction.commit()
  return HttpResponse('okay')
Run Code Online (Sandbox Code Playgroud)

我收到一条错误,指出"[URL]处的TransactionManagementError"此代码不在事务管理下".有任何想法吗?

python django postgresql

1
推荐指数
1
解决办法
2499
查看次数

标签 统计

postgresql ×4

django ×2

python ×2

infinispan ×1

jboss ×1

psycopg ×1