查询Mysql库中的时间比正常时间少1小时

夏令时

前言

今天实施找我提了一个关于时间的Bug,联系人的出生日期设置的为1987-06-02 00:00:00年,但是页面展示却是1987-06-01 23:00:00,少了1小时,本以为是个小问题,结果项目组讨论了半个小时。

正文

其实对于数据库缺少8小时大家都很常见,肯定是因为时区的问题,第一反应去连接数据库的配置文件中url是否写了serverTimezone这个参数,发现用的香港的时区,而且别人的日期是没有问题的,就不是它的问题。
在这里插入图片描述
然后去排查数据库是不是设置了时间,查看数据库时区。发现DBA设置了好了时区,在基础上+08:00,所以排除了时区的问题。

show variables like'%time_zone';

在这里插入图片描述
然后发现数据库里是正常的1987-06-02,但是页面就是1987-06-01 23:00:00,而且我们发现这个bug和时间的区间有关1995年的就没问题。
请教项目组大佬,大哥也感觉很神奇,上报技术经理,经理也一头雾水,最后我们不考虑项目,只考虑一小时问题,查到关于夏令时的事。
夏令时:从1986年到1991年的六个年度,每年从四月中旬第一个星期日的凌晨2时整(北京时间),将时钟拨快一小时,即将表针由2时拨至3时,夏令时开始;到九月中旬第一个星期日的凌晨2时整(北京夏令时),再将时钟拨回一小时,即将表针由2时拨至1时,夏令时结束。(注:摘抄百度百科)
跟我们的项目问题时间刚好吻合,我们的时区采用的Hongkang,查询香港刚好执行夏令时。然后我们修改了项目时区解决问题,
在这里插入图片描述

结束

不由感叹java真的好强大,只要心还在跳,就要努力学习,各位加油呦!

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 可能是以下原因导致MySQL资料库连接不上: 1. MySQL服务未启动或已停止运行。 2. MySQL配置文件中的端口号与实际使用的端口号不一致。 3. 防火墙或其他安全软件阻止了MySQL的连接。 4. MySQL用户名或密码不正确。 5. MySQL数据库不存在或已被删除。 您可以检查以上原因,尝试解决问题。如果问题仍然存在,请提供更多详细信息,以便更好地帮助您解决问题。 ### 回答2: 当MySQL资料库连接不上时,可能是由于以下几种原因: 1. 网络连接问题:可能是服务器网络连接问题,检查网络连接是否正常,确认服务器的IP地址是否正确配置。 2. MySQL服务未启动或端口错误:确保MySQL服务已经正确启动并且监听正确的端口。可以尝试重启MySQL服务或者检查MySQL配置文件中端口的设置。 3. 用户名或密码错误:检查连接MySQL时使用的用户名和密码是否正确,确保没有输入错误的密码或用户名。可以尝试使用MySQL提供的root用户进行连接,以验证连接是否可以正常建立。 4. 防火墙或安全组限制:有时,防火墙或安全组设置可能会阻止对MySQL的连接。检查服务器的防火墙或安全组设置,确认MySQL端口是否被允许通过。 5. 数据库权限问题:确保连接MySQL的用户具有足够的权限来访问所需的数据库。可以尝试使用具有较高权限的用户连接,或者检查当前用户的权限设置。 6. MySQL服务器负载过高:如果MySQL服务器负载过高,可能会导致连接失败。可以尝试等待一段时间后再次尝试连接。 解决方法: - 检查网络连接是否正常并确保服务器的IP地址正确配置。 - 确认MySQL服务已经启动并监听正确的端口。 - 检查用户名和密码是否正确,尝试使用root用户进行连接验证。 - 检查防火墙或安全组设置,确保MySQL端口被允许通过。 - 检查用户权限,确保具有访问所需数据库的权限。 - 等待一段时间并重新尝试连接,以防MySQL服务器负载过高。 如果仍然无法解决问题,可以查看MySQL的错误日志以获得更详细的错误信息,并参考MySQL官方文档或寻求专业人员的帮助。 ### 回答3: 当MySQL资料库连接不上时,可能由以下原因引起: 1. MySQL服务未启动:请确认MySQL服务是否已经启动。可以通过在终端或命令提示符中输入命令 `sudo systemctl start mysql` (Linux)或 `net start MySQL` (Windows)来启动MySQL服务。 2. 网络连接问题:请检查数据库服务器和应用程序之间的网络连接。确保数据库服务器和应用程序所在的机器可以相互访问。可以通过 `ping` 命令来测试两台机器之间的网络连接。 3. 配置文件错误:请检查应用程序是否使用了正确的连接配置信息。检查连接配置信息中的主机名、端口号、用户名和密码是否正确。 4. 防火墙设置:有时防火墙可能会阻止数据库服务器的连接。请确认防火墙是否允许对应的端口进行通信。可以临时将防火墙禁用进行测试,如果能够连接成功,则需要更改防火墙设置来允许数据库服务器的连接。 5. 数据库服务器故障:数据库服务器可能出现故障或不可用。请确保数据库服务器正在运行,并且没有发生异常或崩溃。可以尝试重启数据库服务器来解决问题。 6. 错误的权限设置:请检查连接MySQL使用的用户名是否拥有足够的权限来连接和操作数据库。可以使用 `GRANT` 命令来确保用户拥有正确的权限。 如果上述方法都无法解决问题,可能需要查看MySQL的日志文件以获取更详细的错误信息。日志文件通常位于 `/var/log/mysql` 或 `/var/log/mysqld.log` 目录下。 最后,如果问题仍然存在,建议查阅MySQL官方文档或咨询相关专业人士以获取更进一步的帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值