connector-java-8.0.12:获取“马来半岛标准时间”服务器时区时出错

klr1opcd  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(466)

我们最近将mysql从5.6升级到了8。因此,按照升级说明,在数据库url中使用mysql java connector(8.0.12)和新的驱动程序类名com.mysql.cj.jdbc.driver。但低于这个时区的误差只有“马来半岛标准时间”
java.sql.sqlexception:无法创建poolableconnectionfactory(服务器时区值“malay peninsula standard time”无法识别或表示多个时区)。如果要利用时区支持,则必须配置服务器或jdbc驱动程序(通过servertimezone配置属性)以使用更具体的时区值。)相关原因:org.springframework.beans.factory.beancurrentlyincreationexception:创建名为“dynamicentitymanagerfactory”的bean时出错:factorybean当前正在创建的从org.springframework.beans.factory.support.beandefinitionvalueresolver.resolverence(beandefinitionvalueresolver)的getobject返回null。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"/>
luaexgnf

luaexgnf1#

我解决了自己没有改变任何注册表在操作系统级。这可以帮助别人。
由于mysql中没有“马来半岛标准时间”时区名称,因此出现此错误。因此,按照mysql文档中的说明,从mysql timezones下载timezone\u 2018e\u posix\u sql.zip,并按照说明加载到mysql数据库中。之后,在my.ini文件中添加以下配置并重新启动服务器。

default_time_zone=Asia/Singapore

相关问题