问题原因:
运行问题展示:
运行程序的时候,报了如图的错误

问题分析:
运行问题解释:
这个错误是由于 MySQL 数据库的时区设置不正确引起的。MySQL数据库默认使用系统的时区设置,如果系统的时区设置不正确,就会导致这个错误出现。我愿称之为“时区问题”
错误原因一:
idea默认的时区和mysql8默认的时区不一样
错误原因二:
在中途更换过mysql的依赖版本
解决方案:
如何解决“时区问题”:
方法一: 将 Idea 的时区设置为与 MySQL 8 相同的时区,可以像下面这样进行设置:
1、在 Idea 的菜单栏中选择 “Edit Configurations”。
2、在弹出的窗口中,找到您要运行的应用程序配置,并单击它。
3、在右侧的窗格中,找到 “VM options” 字段,并添加以下两个系统参数:
-Duser.timezone=UTC
-Duser.country=US
其中,-Duser.timezone=UTC 指定了时区为 UTC,-Duser.country=US 则指定国家/地区为美国,这些设置将覆盖本地系统的默认设置。
方法二: 将 MySQL 8 的时区设置为与 Idea 相同的时区,可以在连接 MySQL 数据库时,在 JDBC 连接字符串中添加 serverTimezone 参数,如下所示:
<property name="url" value="jdbc:mysql:///dy?useSSL=false&useServerPrepStmts=true"/>
解释:
- jdbc:mysql:///: 定义使用 MySQL 数据库的 JDBC 驱动程序。
- news?: 要连接的数据库名称为 “news”。
- serverTimezone=GMT%2B8: 指定 MySQL 数据库的时区为东八区(北京时间),注意 %2B 表示 URL 编码中的 “+” 符号。
- useSSL=false: 禁用 SSL 安全协议。
- allowPublicKeyRetrieval=true: 允许使用公钥方式进行身份验证。
!!!注意: serverTimezone=GMT%2B8 表示将 MySQL 数据库的时区设置为东八区(北京时间)。在 JDBC 连接字符串中,使用 %2B 来代替 + 符号,是因为 + 在 URL 中需要进行 URL 编码。如果自己的应用程序运行在东八区,并且希望与 MySQL 数据库共享相同的时区设置,则可以在 JDBC 连接字符串中添加 serverTimezone=GMT%2B8 属性来指定时区。当然,你也可以根据需要将其替换为其他有效的时区设置,例如 serverTimezone=UTC 表示使用协调世界时(UTC)时区。
文章讨论了运行程序时遇到的MySQL时区错误,分析了错误产生的两个原因:Idea的时区与MySQL不一致以及MySQL依赖版本更换。提供了两种解决方案:一是调整Idea的时区设置,添加系统参数;二是修改MySQL的JDBC连接字符串,指定服务器时区。同时提醒注意URL编码在设置时区时的作用。



1783

被折叠的 条评论
为什么被折叠?



