总结解决 No suitable driver found for jdbc:mysql//localhost:3306/ 问题的解决方案,各种情况都已囊括,希望可以帮助到有需要的各位

懂得都懂,看着这几行报错看了好几天,差点吐血!

 查遍全网,无一例外,都是总结为以下三个问题:

1.URL格式问题,数据库名后面加一串声明之类的

(事后证明url有无声明跟连接数据库毫无关系)

2.驱动字符串

(其实只要是比较高版本的jdk,都会像下图一样报错并提示驱动字符串要加cj.而不是报No suitable driver,所以并不是这个问题)

 

driver=com.mysql.cj.jdbc.Driver
driver=com.mysql.jdbc.Driver


3.Classpath中没有加入合适的mysql_jdbc驱动

(意思就是假如数据库版本5.0.x要对应驱动包版本5.0.x,假如数据库8.0.x要对应驱动包8.0.x,这是笔者在最后把问题解决的前提,所以读者一定要先把版本先对应好)

可是检查了上述问题的地方过百遍,没有任何问题,都快要砸电脑了!!!!!!

但是最后,终于,终于,终于找到问题所在!!

原来笔者电脑上居然安装了两个MySQL,一个是5.1版本,一个是8.0.29最新版,而且两个数据库的端口都设置成了3306(而且之前在安装MySQL时,环境变量居然也没有配置好),这就导致我对自己电脑数据库的认知出现错误(以为我的电脑只有一个8.0.29版本的MySQL),因为我使用的SQLyog默认连接的就是MySQL8.0.29版本的MySQL,我之前用命令行进入MySQL时,我一直以为我在使用8.0.29版本的MySQL(事后才知道用命令行默认进入的是MySQL5.1,怪不得之前把进程里的一个MySQL进程关闭后再进入命令行中的MySQL后,显示的表才能与SQLyog对应上,因为这操作是从本站某篇文章<命令行里的数据库和SQLyog数据库对应不上>看到的处理方法,文中说道:只要把进程里的MySQL进程关掉后在命令行上重新通过cd进入MySQL路径打开MySQL就能对应上SQLyog的数据),

所以最后总结:导致报错的原因可能有两个,

一是MySQL环境变量没有配置好,导致eclipse压根没办法找到8.0.29版本MySQL的打开路径(这是大概率问题所在,所以读者假如在文章开头写的三个问题都尝试过还是报错No suitable driver的话,就可以检查一下自己的MySQL的环境变量配置有没有出现问题),

二是电脑上装有不止一个MySQL,而且端口都是一样的,有可能就导致了无法正常连接数据库了(检查电脑上是不是装了多个数据库,发现是的话,可以检查环境变量写的路径是不是自己一直在使用的数据库的路径,同时把其它不用的数据库都卸载干净).

此外,笔者由于是初学者,所以在最终解决问题之前还尝试了很多思路去解决问题,以下列出以供各位读者参考,各路高手勿喷.

是不是jdk版本问题或者是不是eclipse版本问题

因为笔者看到有文章提到报错No suitable driver的同时驱动是加载成功的,所以是因为8.0.x版本的MySQL既要与8.0.x版本的驱动jar包对应还要与13.0版本的jdk对应,所以笔者就去尝试把jdk更新成13.0版本,但是发现eclipse版本巨旧(在java1234课程里下载的版本)导致无法使用13.0版本的jdk,所以就又去把eclipse更新成最新版本,然后把jdk更新成13.0,发现还是不行,所以与eclipse版本无关,也与jdk版本无关,因为最后找到原因所在后尝试使用哪个版本的jdk都可以连接成功的.

是不是MySQL版本和驱动jar包版本问题

其实是有关系的,但是文章开头陈述的三个问题解决方案中已经写到,只要8.0对应8.0,5.0对应5.0,正常导入到build path就把问题解决了,所以与笔者最后解决问题关系不大,只是解决问题的前提而已.