Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 在postgresql 9.3中插入数据时出错_Hibernate_Postgresql_Jdbc_Postgresql 9.3_Enterprisedb - Fatal编程技术网

Hibernate 在postgresql 9.3中插入数据时出错

Hibernate 在postgresql 9.3中插入数据时出错,hibernate,postgresql,jdbc,postgresql-9.3,enterprisedb,Hibernate,Postgresql,Jdbc,Postgresql 9.3,Enterprisedb,目前我正在使用PostgreSQL Professional Advanced Server(PPAS)9.3(PostgreSQL 9.3的修改版) 我试图在postgresql数据库中插入一行,但出现以下错误: error log: javax.ejb.EJBTransactionRolledbackException: [2] An exception has occurred: ERROR: current transaction is aborted, commands ignored

目前我正在使用PostgreSQL Professional Advanced Server(PPAS)9.3(PostgreSQL 9.3的修改版)

我试图在postgresql数据库中插入一行,但出现以下错误:

error log:
javax.ejb.EJBTransactionRolledbackException: [2] An exception has occurred: ERROR: current transaction is aborted, commands ignored until end of transaction
block
        at org.jboss.ejb3.tx.Ejb3TxPolicy.handleInCallerTx(Ejb3TxPolicy.java:87)
        at org.jboss.aspects.tx.TxPolicy.invokeInCallerTx(TxPolicy.java:130)
        at org.jboss.aspects.tx.TxInterceptor$Supports.invoke(TxInterceptor.java:148)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
        at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:95)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
        at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
        at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:77)
        at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java:110)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
        at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:46)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
        at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
        at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
        at java.lang.Thread.run(Thread.java:662)
Caused by: com.code.Exception: [2] An exception has occurred: ERROR: current transaction is aborted, commands ignored until end of transaction bl
ock
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:112)
        at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:166)
        at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
        at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
        at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
        at org.jboss.aspects.tx.TxPolicy.invokeInCallerTx(TxPolicy.java:126)
        ... 75 more
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:2161)
        at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1890)
        at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:559)
     org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:417)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:302)
        at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeQuery(WrappedPreparedStatement.java:342)

        ... 95 more
我尝试先创建BeginTransaction对象,然后在出现异常时回滚,但这对我没有帮助

甚至我也在使用单insert语句。正如我所知,如果前一条语句未能执行,那么这个错误就会出现,但在我的例子中,我只有一条语句,但我也得到了相同的错误

这是一段仅在postgresql中不起作用的代码,我们在oracle和sql server中使用相同的代码,这两种代码都在起作用。是的,我在ppas上执行了相同的查询,它的执行没有任何错误。在此之前,我们对给出错误的语句执行了操作,但在此之后,我们关闭了连接

请帮帮我

这是:

原因:org.postgresql.util.PSQLException:错误:当前事务中止,在事务块结束之前忽略命令

指示上一条语句失败,并且您的代码没有捕获异常并发出
回滚
。因此,它试图继续使用处于中止状态的事务

当自动提交关闭时,PostgreSQL需要在失败语句后显式回滚。它永远不会隐式回滚并启动新事务。它不能忽略有错误的语句并继续处理事务-整个事务必须中止并重试(除非手动使用保存点)


这与许多数据库不同,因此它可能暴露了代码中的一个潜在缺陷,即它所做的某些事情会导致一个
错误
,然后忽略该错误并继续执行。查看PostgreSQL server错误日志,看看第一个错误是什么,它是什么语句。

经过一个多月的谷歌搜索和研发,我终于成功修复了上述PostgreSQL 9.3的常见错误,方法是将“edb_stmt_level_tx=off”的值设置为“on”在PPAS9.3 postgresql.config属性文件中。有关更多信息,请访问以下给定链接。
有关更多信息,请参见

这是新代码还是以前有效的代码?如果是新的,请将代码减少到再现错误所需的最小值,编辑问题,然后粘贴进去。如果以前成功过,有什么变化?你能在pgAdminIII或psql中成功执行相同的查询吗?嗨,迈克,谢谢你的回复,编辑了代码。我似乎记得数据源可以(尝试?)对回滚和检查点行为进行一些控制,但我今天早上找不到文档。@MikeSherrill';CatRecall';如果PgJDBC支持自动保存点,这会很方便——尽管PostgreSQL中的保存点有点昂贵。不过PSQLDBC支持它们。@Craig在添加conn.rollback()之后;在代码中,错误仍然存在。第一次连接我使用的是普通jdbc,第二次使用的是HibernateUtil.currentSession().connection()。那么你能告诉我发生这种事的确切原因吗。