Ошибка Postgres — недопустимое значение параметра «TimeZone»: «CST»

Обнаружена ошибка ниже при запуске приложения из облака, однако эта ошибка не возникает при запуске из локальной сети.

Caused by: java.sql.SQLTransientConnectionException: HikariPool-2 - Connection is not available, request timed out after 30000ms.
    at com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:695)
    at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:197)
    at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:162)
    at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:128)
    at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:122)
    at org.hibernate.internal.NonContextualJdbcConnectionAccess.obtainConnection(NonContextualJdbcConnectionAccess.java:38)
    at org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.acquireConnectionIfNeeded(LogicalConnectionManagedImpl.java:108)
    ... 146 more
Caused by: org.postgresql.util.PSQLException: FATAL: invalid value for parameter "TimeZone": "CST"
    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2713)
    at org.postgresql.core.v3.QueryExecutorImpl.readStartupMessages(QueryExecutorImpl.java:2825)
    at org.postgresql.core.v3.QueryExecutorImpl.<init>(QueryExecutorImpl.java:175)
    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:313)
    at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:54)
    at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:263)
    at org.postgresql.Driver.makeConnection(Driver.java:443)
    at org.postgresql.Driver.connect(Driver.java:297)
    at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138)
    at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:358)
    at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206)
    at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:477)
    at com.zaxxer.hikari.pool.HikariPool.access$100(HikariPool.java:71)
    at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:725)
    at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:711)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    ... 1 more
   

Попробовал также настройку ниже, но все равно определяет часовой пояс CST. Просмотрел несколько статей, как указано ниже, но в основном обсуждаются конфигурации, относящиеся только к postgre.

https://www.postgresql.org/message-id/[email protected]https://www.postgresql.org/message-id/25914.1510934246%40sss.pgh.pa.us

https://postgrespro.com/list/thread-id/1543208

Установите serverTimezone для строки подключения jdbc, как показано ниже.

jdbc:postgres://localhost:3306/test?serverTimezone=UTC

Также текущий часовой пояс для Postgre — UTC. ниже приведены команды, используемые для отображения и установки часового пояса в postgre.

SHOW TIMEZONE
SET TIMEZONE 'UTC'
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
129
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Параметр serverTimezone отсутствует, поэтому драйвер использует часовой пояс, настроенный для вашей JVM. Если вы не хотите это менять, попробуйте установить параметр timezone для серверного процесса:

jdbc:postgresql://localhost:5432/test?options=-ctimezone=UTC

@Albe - да, в основном из-за JVM. Пробовал другой подход, установив часовой пояс в команде Java.

SarangRN 16.05.2024 08:58

@Альбе, это присутствует в Postgre?

SarangRN 16.05.2024 12:54

@Albe - моя вина, я имею в виду, что параметр serverTimezone присутствует в случае драйвера postgre для строки подключения jdbc?

SarangRN 16.05.2024 12:56

Если вы имеете в виду «mysql», я просто скопировал это у вас, не глядя. Я говорил о PostgreSQL.

Laurenz Albe 16.05.2024 12:56

@Альбе - это пишешь, это опечатка. Я пробовал для postgre.

SarangRN 16.05.2024 12:58
Ответ принят как подходящий

установите временную метку UTC во время запуска приложения в облаке, чтобы всякий раз, когда JVM приложения пытается подключиться к базе данных postgre, она должна использовать UTC в качестве временной метки. Следующие команды представлены в файле Docker, который будет использоваться при запуске приложения в контейнере.

java -Duser.timezone=UTC -jar service-docker.jar

Другие вопросы по теме