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

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

java.sql.SQLException: невозможно создать PoolableConnectionFactory (значение часового пояса сервера «Стандартное время Малайского полуострова» не распознано или представляет более одного часового пояса. Необходимо настроить либо сервер, либо драйвер JDBC (через свойство конфигурации serverTimezone) для использования более конкретное значение часового пояса, если вы хотите использовать поддержку часового пояса.) Связанная причина: org.springframework.beans.factory.BeanCurrentlyInCreationException: ошибка при создании bean-компонента с именем 'dynamicEntityManagerFactory': FactoryBean, который в настоящее время находится в процессе создания, вернул null из getObject в org. springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:378) ....................... Вызвано: java.sql.SQLException: значение часового пояса сервера «Стандартное время Малайского полуострова» не распознано или представляет более одного часового пояса. Вы должны настроить либо сервер, либо драйвер JDBC (через свойство конфигурации serverTimezone), чтобы использовать более конкретное значение часового пояса, если вы хотите использовать поддержку часового пояса. в com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)

используя приведенную ниже конфигурацию для создания соединений в tomcat context.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"/>

person Ram    schedule 16.10.2018    source источник
comment
Этот часовой пояс, по-видимому, имеет другое имя в некоторых системах: со стандартным временем Малайского полуострова"> stackoverflow.com/questions/31589491/   -  person mypetlion    schedule 16.10.2018
comment
@mypetlion, да, я видел этот пост до публикации этой проблемы. Но мне не разрешено изменять имя реестра в клиентской системе. Есть ли другое решение для этого на уровне конфигурации источника данных mysql, tomcat?   -  person Ram    schedule 16.10.2018


Ответы (1)


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

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

default_time_zone=Asia/Singapore
person Ram    schedule 18.10.2018
comment
Не будет ли достаточно выполнить следующую команду MySQL? SET GLOBAL time_zone='Asia/Kuala_Lumpur'; - person asam; 10.04.2019