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();这个方法里面作为参数。所以就不用我们写了。