Я понимаю, что это сообщение несколько лет назад, но я все еще сталкиваюсь с теми же проблемами. К сожалению, предлагаемые изменения не работают для моего текущего варианта использования.
Столкнулся со следующей проблемой: - «Ошибка: подготовленный оператор xxx не существует» - «Ошибка: подготовленный оператор xxx уже существует»
Пробовал после предложенного изменения, но все еще получал ту же ошибку:
Технический стек:
- Spring Boot (2.1.7.RELEASE)
- Spring Data (JPA+ Hibernate)
- Приложение развернуто на Heorku с использованием Heroku Postgre
- PgBouncer на стороне клиента.
- Изменен URL-адрес БД со следующими свойствами: "? Sslmode = disable & prepareThreshold =0 & prepareStatementCacheQueries = 0 "
- В конфигурацию Heroku добавлены следующие параметры:
- PGSSLMODE = отключить
- PGBOUNCER_POOL_MODE = транзакция
- PGBOUNCER_IGNORE_STETERS_ig_t_t_t_f_S_TAR_S_TAR_S_TAR_S_TAR_S_TAR_S_TAR_S_ * * * *
- установить в качестве значения конфигурации PGBOUNCER_URLS имя БД Urls
- Spring Data настроен на использование двух баз данных для (Reaд / писать и читать).
- Использование @Transactional (readOnly = true) с
@Around("@annotation(transactional)")
public Object proceed(ProceedingJoinPoint proceedingJoinPoint, Transactional transactional) throws Throwable {
try {
if(transactional.readOnly()) {
RoutingDataSource.setReplicaRoute();
LOGGER.info("Routing database call to the read replica");
}
return proceedingJoinPoint.proceed();
} finally {
RoutingDataSource.clearReplicaRoute();
}
}