mysql5.7即以后的版本跟以下版本相差比较大,经常会出现旧版中的数据到新版就出现各种问题,记一次idea连接mysql8错误,原idea项目是机房老师上课发来的,机房环境是idea2019,mysql5.6,用的connector/j版本为mysql-connector-java-5.0.5-bin.jar,本人电脑的环境是idea2020,用的connector/j版本为mysql8.0.22,mysql-connector-java-8.0.22.jar,把老师的项目导入到我的idea就出现各种问题。
问题一:idea加载mysql驱动类失败
报错内容:
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.
图示:
解决方法:
加载驱动地址改为com.mysql.cj.jdbc.Driver
问题二:mysql时区不统一
报错内容:
Exception in thread "main" java.sql.SQLException: 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 specific time zone value if you want to utilize time zone support.
解决方法:
方式一:修改MySQL时区
先用cmd命令行连接上数据库,win+r输入cmd回车可以快速打开cmd
输入mysql -u root -p
回车后输入密码再回车登录MySQL
继续输入命令show variables like '%time_zone%';
回车,需要把value列system时区改掉
修改命令:set global time_zone='+8:00';
然后关闭连接重新打开cmd,再输入命令show variables like '%time_zone%';
查询一下时区,就变成+8:00了
此时进入idea测试,发现不报该错误了
如需改回原来的时区就用改命令:set global time_zone='SYSTEM';
方式二:代码中给定时区
在url中数据库名后面加入代码?serverTimezone=GMT%2B8&useSSL=false
如图,其中eblog是我的数据库
推荐使用第一种方式,第一种方式改一次就可以了,第二种方式需要每个项目都要加
问题三:导入mysql-connector-java各种类错误
问题一也算是这个问题,mysql-connector-java-8.0.22和mysql-connector-java-5.0.5许多类的路径不同,所以导入路径不同
如图,老师发给我的项目导入了一个StringUtils类,他导入的地址是import com.mysql.jdbc.StringUtils;
到我这里就报错了
我们来对比一下mysql-connector-java-5.0.5和mysql-connector-java-8.0.22,在5.0.5版本中可以在路径com.mysql.jdbc.StringUtils找到该类,但是8.0.22版本中找不到
然后我们去8.0.22版本里的jar包里去找StringUtils包,可以找到该包路径在com.mysql.cj.util下,我们idea导包import com.mysql.jdbc.StringUtils;
换成 import com.mysql.cj.util.StringUtils;
就可以了
授人以鱼不如授人以渔,每天都要进步
Comments NOTHING