2015-02-13 4 views
6

Ich verbessere derzeit eine Anwendung, die Spring und Hibernate verwendet. Es gibt mehrere Instanzen, in denen die Anwendung über vorbereitete Anweisungen mit der Datenbank (Postgres) kommuniziert. Die Anwendung bis jetzt, kommuniziert mit Postgres über dbcp.Vorbereitete Anweisungen in dbcp + spring + hibernate + jdbc deaktivieren?

Änderung: Die Anwendung kommuniziert jetzt Postgre via Pgbouncer.

d.h .: Anwendung -> dbcp -> pgbouncer -> Postgres

Ich verstehe dies nicht die ideale Lösung, das heißt sein würde: 2 Fahrgemeinschaften mit. Aber aufgrund der aktuellen Architektur benötigen wir beide.

Voraussetzung: pgbouncer nicht unterstützt vorbereitete Anweisungen in Transaktion Modus & daher beseitigt werden müssen.

Änderungen, um vorbereitete Aussage zu beseitigen.

1) psql: VERSION 9.2.6 =

keine Änderung

2) pgbouncer: in der Konfigurationsdatei festgelegt folgende attribures

ignore_startup_parameters=extra_float_digits 
    pool_mode=transaction 
    server_reset_query= 

3) jdbc: Die vorbereitete Der Schwellenwert wurde entsprechend festgelegt. dh: jdbc:postgresql://localhost:6541/postgres?prepareThreshold=0

JAVA VERSION = 1.7.0_51 

JDBC DRIVER = postgresql-9.3-1102.jdbc41-3.jar 

4) DBCP: poolPreparedStatements = false maxOpenPreparedStatements = 0

5) Ruhezustand: keine Änderung

6) Feder: keine Änderung

Ausgabe:

Trotz all dieser Änderungen sehe ich immer noch vorbereitete Anweisungen, die versuchen, erstellt zu werden & Transaktionen aufgrund dieser.

„ERROR: vorbereitete Anweisung‚S_21‘existiert nicht; verschachtelte Ausnahme ist org.postgresql.util.PSQLException: ERROR: vorbereitete Anweisung‚S_21‘existiert nicht“

ich alle logischen Änderungen entfernt haben das verwendete eine vorbereitete Aussage.

Wie kann ich verhindern, dass die anderen vorbereiteten Anweisungen erstellt werden? Erstellt Feder oder Winterschlaf intern vorbereitete Anweisungen für ihre Verwendung? Wenn ja, wie deaktiviere ich sie?

+0

Das klingt wie eine kolossal schlechte Idee. – chrylis

+1

haben Sie dieses Problem behoben? Können Sie bitte posten, was Sie getan haben, um dieses Problem zu lösen? – awsome

Antwort

0

Die folgende Konfiguration arbeitet an meinem System ohne Fehler: vorbereitete Anweisung "S_21" nicht vorhanden; Fehler.Hoffe, es hilft:

  1. pgBouncer 1.6.1, pool_mode = Transaktion
  2. Added db-Verbindungszeichenfolge Hibernate: prepareThreshold = 0
  3. Postgresql-JDBC 9,4-1203-jdbc41 Treiber
  4. Disable Vorbereitet Aussagen in Hibernate 4.x

    <property name="hibernate.cache.use_query_cache">false</property> 
    
Verwandte Themen