1

助けが必要です。コンテキストを教えてください。2つのテスト環境があります。そのうちの1つでは、Webアプリがpostgresの1つのデータベースに送信され、アプリはここで正常に実行されます。もう1つの環境では、2つのデータベースがあります。スレーブ1とメイン1、およびアプリでデータベースに関連するエラーが表示されています。

ディスカッションという名前のテーブルがあり、もう1つはnetwork_discussionという名前です。ディスカッションをすぐに保存すると、network_discussionに保存しましたが、2番目の環境では機能していません。これは、GRANTアクセスに関連するものだと思いましたが、明らかにそうではありません。エラートレース:

2012-09-15 15:10:27,162|TP-Processor12|ERROR|mp_sites|web|mpmvstage|/home/matchpoint-web/yfroot||Hibernate operation: Could not execute JDBC batch update; uncategorized SQLException for SQL [insert into users.network_discussion (network_id, user_discussion_id, title, last_updated_dt, id) values (?, ?, ?, ?, ?)]; SQL state [null]; error code [0]; Batch entry 0 insert into users.network_discussion (network_id, user_discussion_id, title, last_updated_dt, id) values (33214047252677632, 33495522229786655, company-corp.com_newdisa, 2012-09-15 15:10:27.153000 -07:00, 33495522229786656) was aborted.  Call getNextException to see the cause.; nested exception is java.sql.BatchUpdateException: Batch entry 0 insert into users.network_discussion (network_id, user_discussion_id, title, last_updated_dt, id) values (33214047252677632, 33495522229786655, company-corp.com_newdisa, 2012-09-15 15:10:27.153000 -07:00, 33495522229786656) was aborted.  Call getNextException to see the cause.
org.springframework.jdbc.UncategorizedSQLException: Hibernate operation: Could not execute JDBC batch update; uncategorized SQLException for SQL [insert into users.network_discussion (network_id, user_discussion_id, title, last_updated_dt, id) values (?, ?, ?, ?, ?)]; SQL state [null]; error code [0]; Batch entry 0 insert into users.network_discussion (network_id, user_discussion_id, title, last_updated_dt, id) values (33214047252677632, 33495522229786655, company-corp.com_newdisa, 2012-09-15 15:10:27.153000 -07:00, 33495522229786656) was aborted.  Call getNextException to see the cause.; nested exception is java.sql.BatchUpdateException: Batch entry 0 insert into users.network_discussion (network_id, user_discussion_id, title, last_updated_dt, id) values (33214047252677632, 33495522229786655, company-corp.com_newdisa, 2012-09-15 15:10:27.153000 -07:00, 33495522229786656) was aborted.  Call getNextException to see the cause.
java.sql.BatchUpdateException: Batch entry 0 insert into users.network_discussion (network_id, user_discussion_id, title, last_updated_dt, id) values (33214047252677632, 33495522229786655, company-corp.com_newdisa, 2012-09-15 15:10:27.153000 -07:00, 33495522229786656) was aborted.  Call getNextException to see the cause.
    at org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError(AbstractJdbc2Statement.java:2512)
    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1314)
    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:347)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2574)
    at org.apache.commons.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)
    at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
    at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:246)
    at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:235)
    at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:139)
    at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
    at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
    at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
    at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
    at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
    at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:584)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:500)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:473)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.doCommitTransactionAfterReturning(TransactionAspectSupport.java:267)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
    at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:623)
    at com.netblue.matchpoint.service.DiscussionService$$EnhancerByCGLIB$$b685dad0.addOrGetDiscussions(<generated>)
    at com.netblue.matchpoint.filter.DiscussionFilter.doFilter(DiscussionFilter.java:30)
    at com.netblue.matchpoint.sitecontroller.MpBaseSiteController.getFilteredParams(MpBaseSiteContr

それは続きます、私はエラートレースがもっと続くことを意味します、それで私にアイデアを与えるどんな助けも素晴らしいでしょう、私はこれをすでにグーグルでトレースします、しかし結果はありません、ありがとう。

4

2 に答える 2

1

私は実際に問題を解決しました。それは本当に苦痛でしたが、神に感謝します。私が言ったように、データベースのある環境では動作しますが、他の環境では動作しません。問題は、保存と依存レジスタが複数あることでしたが、最初は保存に時間がかかるため、保存したときに2 番目のレジスタ (2 番目のテーブルは最初のレジスタに依存する別のテーブル) キーのデータはまだ保存されていないため、通常のようにカスケードに保存できませんでした。 「ゼロから始める」開発ではないので、私がしたことは、コードをさらに掘り下げて、データが正確に保存された場所を取得し、そこに他のレジスタの保存を配置することでした. したがって、基本的に、その奇妙なエラーをトレースしている場合、DB に保存しようとしているデータが破損していることに変わりはありません。

于 2012-09-18T04:29:58.787 に答える
1

BatchUpdateException.getNextException役に立たない場合(または単に が返される場合) 、 hibernate でのバッチ処理nullを無効にすることもできます: hibernate セッション構成で設定します (もちろん、これは問題を解決するためにのみ行う必要があり、永久に設定するべきではありません)。hibernate.jdbc.factory_class=org.hibernate.jdbc.NonBatchingBatcherFactory

于 2012-11-18T23:34:08.857 に答える