mysql-connector-java-8.0.12: получение ошибки для часового пояса сервера «Стандартное время Малайзии» - PullRequest
0 голосов
/ 16 октября 2018

Мы недавно обновили MySQL с 5.6 до 8. Итак, согласно инструкциям по обновлению, используя mysql-java -nector (8.0.12) и имя нового класса драйвера, т.е. com.mysql.cj.jdbc.Driver в URL базы данных.Но ошибка «Ошибка ниже» только для этого часового пояса «Стандартное время Малайского полуострова»

java.sql.SQLException: Невозможно создать PoolableConnectionFactory (значение часового пояса сервера «Стандартное время Малайского полуострова»'не распознан или представляет более одного часового пояса. Необходимо настроить сервер или драйвер JDBC (через свойство конфигурации serverTimezone), чтобы использовать более конкретное значение часового пояса, если вы хотите использовать поддержку часового пояса.) Связанная причина: org.springframework.beans.............. .............. Причина: java.sql.SQLException: значение часового пояса сервера «Стандартное время Малайского полуострова» не распознано илипредставляет более одного часового пояса.Вы должны настроить сервер или драйвер JDBC (через свойство конфигурации serverTimezone), чтобы использовать более конкретное значение часового пояса, если вы хотите использовать поддержку часового пояса.в com.mysql.cj.jdbc.exceptions.SQLError.createSQLException (SQLError.java:129)

, используя приведенную ниже конфигурацию для создания соединений в контексте tomcat.xml

<Resource auth="Container" driverClassName="com.mysql.cj.jdbc.Driver" factory="com.grc.common.EncryptedDataSourceFactory" maxActive="100" maxIdle="30" maxWait="10000" minEvictableIdleTimeMillis="30000" minIdle="10" name="jdbc/TestDB" password="0df9f21ee02a561fa39f18f5c7581061" removeAbandoned="true" removeAbandonedTimeout="180" testOnBorrow="true" testOnReturn="false" testWhileIdle="true" timeBetweenEvictionRunsMillis="30000" type="javax.sql.DataSource" url="jdbc:mysql://127.0.0.1:3306/production1?useSSL=false" username="root" validationInterval="30000" validationQuery="SELECT 1"/>

Кроме того, пробовал с параметром serverTimezone, как показано ниже, но не повезло.

<Resource auth="Container" driverClassName="com.mysql.cj.jdbc.Driver" factory="com.grc.common.EncryptedDataSourceFactory" maxActive="100" maxIdle="30" maxWait="10000" minEvictableIdleTimeMillis="30000" minIdle="10" name="jdbc/TestDB" password="0df9f21ee02a561fa39f18f5c7581061" removeAbandoned="true" removeAbandonedTimeout="180" testOnBorrow="true" testOnReturn="false" testWhileIdle="true" timeBetweenEvictionRunsMillis="30000" type="javax.sql.DataSource" url="jdbc:mysql://127.0.0.1:3306/production1?useSSL=false&amp;serverTimezone=Malay Peninsula Standard Time" username="root" validationInterval="30000" validationQuery="SELECT 1"/>

1 Ответ

0 голосов
/ 18 октября 2018

Я решил, не меняя реестр на уровне ОС.Это может помочь другим.

Получение этой ошибки, поскольку имя часового пояса с «Стандартным временем Малайского полуострова» недоступно в MySQL.Так, как указано в этой документации MySQL , скачано timezone_2018e_posix_sql.zip из этого часовых поясов MySQL и загружено в базу данных MySQL в соответствии с инструкциями.После этого добавили ниже конфигурацию в файл my.ini и перезапустили сервер.

default_time_zone=Asia/Singapore
...