spring boot -连接mysql指定时区的重要性

519 阅读1分钟

世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程。

这是我在昨天产品升级时遇到的实际问题 :

1. 我设置了一个定时,以天为单位取当天的数据,
   连接是这样配置的 : 
   jdbc:mysql://127.0.0.1:3306/test?serverTimezone=GMT%2B8	
2. 在升级时,发现取出的数据是乱码,由于数据库是共用的,所以不能在数据库中修改编码格式,
   只能在连接中指定 : 
   jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf-8
3. 而这时问题又来了,取出的数据为空,我特意查了系统时间,显示是当天没错,
   但是就是取不出数据,我想可能和时区有关,
   于是又加上了时区的指定 :
   jdbc:mysql://127.0.0.1:3306/test?serverTimezone=GMT%2B8&characterEncoding=utf-8
5. 这时数据可以正常显示

完整配置如下 :

spring :
  datasource :
    url               : jdbc:mysql://127.0.0.1:3306/test?serverTimezone=GMT%2B8&characterEncoding=utf-8
    username          : root
    password          : root
    driver-class-name : com.mysql.cj.jdbc.Driver

总结 :
1. 问题不大,但花了2个多小时
2. 指定时区很重要,千万别忽视