When executing batch queries via JDBC to pgbouncer, I get the following error:
org.postgresql.util.PSQLException: ERROR: prepared statement \"S_1\" already e
To discard session state and effectively forget the "S_1" prepared statement, use server_reset_query option in PgBouncer config.
See http://pgbouncer.projects.postgresql.org/doc/faq.html#_how_to_use_prepared_statements_with_transaction_pooling
Switching into session mode is not an ideal solution. Transacion pooling is much more efficient. But for transaction pooling you need stateless DB calls.
I think you have three options:
I would try option 1 or option 3 - depending on actual way in which your app uses them.
For more info, read the docs:
http://pgbouncer.projects.postgresql.org/doc/config.html (search for server_reset_query),
or google for this:
postgresql jdbc +preparethreshold