Недавно мы обновили 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&serverTimezone=Malay Peninsula Standard Time" username="root" validationInterval="30000" validationQuery="SELECT 1"/>