关于数据库错误:serverTimeZone

今天发生了一件事,中午去吃饭回来睡觉,午休结束后要写代码了,发现idea关闭了,平时一直开着,几乎不关闭的。这还不算邪门儿,打开后启动项目报了:The server time zone value‘XXXXXX‘ is unrecognized or represents...这样的错。

一百度是时区问题,网上好多解决方法是在数据库URL后加:serverTimezone=UTC。但是加了之后数据库存入的日期少了一天,例如页面选的3月2日,数据库存入后成了3月1日。又百度有人说要把UTC换成Asia/Shanghai。翻译过来就是亚洲/上海。好繁琐,因为原来是没有的。又找别的解决方法,后来想到数据库时区好像可以设置,本来就是一项数据库环境设置,可以用SQL命令设置吗?然后百度SQL语句。找到:set global time_zone = ‘+8:00‘;  在Navicat上运行,执行成功。然后又启动项目就正常启动了。页面试着选择日期保存,数据库也和选择的日期一致了。

事后学习柯南的分析思路分析了一下原因,对错不说,最起码解释的通。

项目处于启动中,连接着数据库,当发生异常时直接中断结束运行,没有来得及保存设置信息,造成设置丢失,启动项目时因为数据库没有时区的环境设置所以才会报这样的错。

自我感觉正确,欢迎高手指正。

这件事也使我有了一个感悟,遇到问题怎么解决不重要,重要的是要有自己的分析、判断。这样思路会越来越清晰。抓住事物的本质,才能游刃有余、运用自如。