JBDBC出现:com.mysql.cj.exceptions.InvalidConnectionAttributeException错误以及一些小细节。

 JDBC连接数据库时报错:Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
  

此问题的意思是:sql的server time zone value 不同或者没有可用时区,需要给它指定一个时区。

此时代码原文是

解决方法:只需要在url值的最后加上?serverTimezone=UTC即可:

 最后查看数据库代码修改成功。控制台输出受影响的行数为1,表示对数据库操作1行数据成功。

而控制台输出的红色字体:Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.

是由驱动类运行的:我们可以Ctrl+B跟进查看一下Driver.class文件如下:

这里是一个静态代码块,会随着Driver.class驱动类加载进内存时就会自动执行。此时就会在控制台输出红色字体。

其实这里还有一个小细节,就是在MySQL5之后的驱动JAR包可以不用写注册驱动:

 可以直接注释掉,此时是不会报错的:

原因其实呢是因为:在我们引用的驱动jar包的META-INF下的serveices目录的java.sql.Driver文件里面记录了对应的驱动的类的名称 :

 它会读取文件,把这个类名读取出来,然后放到Class.forName();这个方法里面作为参数。所以就不用我们写了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值