没有找到适合的驱动程序用于 'jdbc:mysql://localhost:3306/mysql'。

59

我使用Java连接MySQL数据库时出现以下错误:

java.sql.SQLException: No suitable driver found for 
jdbc:mysql://localhost:3306/mysql at
java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at MyTest1.main(MyTest1.java:28)

我正在使用mysql-connector-java-5.1.18-bin.jar驱动程序,已将其添加到我的构建路径中。我已重启MySQL,并通过root用户且没有密码从命令行登录成功。但是在netstat中没有看到端口3306。之前我遇到过不同的错误(我没有改变代码)。错误信息是“jdbc mysql Access denied for user 'root'@'localhost password NO”。

try {
    Class.forName("com.mysql.jdbc.Driver");
} 
catch (ClassNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} 


try {
    String url = "jdbc:mysql://localhost:3306/mysql";
    Connection con = DriverManager.getConnection(url, "root", "");
}
catch (Exception e){
    e.printStackTrace();
}

你能发布一下你正在使用的MySQL命令行吗?这可能只是一个使用“localhost”和另一个使用127.0.0.1的情况。 - hafichuk
在这个链接中有几个要点,关于不导入任何东西... http://dev.mysql.com/doc/refman/5.1/en/connector-j-usagenotes-basic.html#connector-j-usagenotes-connect-drivermanager - r0ast3d
1
当你运行它时,它是否在你的运行时类路径上并不重要,而不是在你的构建路径上。 - Dave Newton
你确定在类路径上有mysql-connector-java-5.1.18-bin.jar吗? - Igor Nikolaev
1
我正在使用Eclipse,因此当我添加库时,它应该已经将其添加到类路径中。该jar文件位于引用库下。我已更新上面的命令。错误出现在“Connection”行。 - user994165
相关问题:https://dev59.com/XW035IYBdhLWcg3wNdPg - Pacerier
8个回答

50
在这种情况下(假设Class#forName()没有抛出异常;你的代码继续运行而不是抛出异常),这个SQLException意味着任何已加载的驱动程序中的Driver#acceptsURL()都返回了false
而且,你的JDBC URL是错误的:
String url = "'jdbc:mysql://localhost:3306/mysql";

去掉单引号:

String url = "jdbc:mysql://localhost:3306/mysql";

另请参阅:


对我来说,错误还没有消失,但使用 url = "jdbc:mysql://localhost:3306/dbname?useSSL=false"; 对我有效。 - Fawad

26
你需要为mysql-connector.jar设置classpath。 在Eclipse中,使用构建路径。 如果您正在开发任何Web应用程序,则必须将mysql-connector放置在WEB-INF目录的lib文件夹中。

2
mysql-connector 应该由系统提供,而不应包含在 jar 或 war 中。 - Marcel Korpel
为了消除一个可能的错误源,您可以在命令提示符中输入“CLASSPATH =%CLASSPATH%; mysql-connector.jar;” - DoesEatOats
构建路径很重要,为你的生活节省一些时间。 - Jackson

10

使用Netbean时,进入项目选项卡并单击下拉按钮以选择库文件夹。右键单击d库文件夹,然后选择“添加JAR/文件夹”。找到mysql-connectore-java.*.jar文件在您的系统上的位置。 这对我有用,希望对您也有用。 如果遇到任何问题,请回复。


5

字符串描述数据库驱动程序的排版错误也可能导致该错误。

指定为以下字符串:

"jdbc:mysql//localhost:3307/dbname,"usrname","password"

如果缺少"mysql"后面的冒号,可能会导致出现"找不到合适的驱动程序"错误。

正确的驱动程序字符串应该是:

jdbc:mysql://localhost:3307/dbname,"usrname","password"

太好了!我和楼主有完全相同的症状,而你猜到了我犯的错误:在错误的位置添加端口号jdbc:mysql:3306//localhost后,我将其与列一起删除:jdbc:mysql//localhost,变得非常困惑,我的com.mysql.jdbc.Driver去哪里了? - MKaama
非常感谢!我的jdbc字符串中缺少一个“:”,果然遇到了这个问题。 :-) - Joseph Bleau

4
这个错误发生在我身上,通常是因为在Eclipse项目(或IDE)中没有包含mysql-connector.jar的问题。
而在我的情况下,则是由于操作系统出现了问题。
我正在phpmyadmin中编辑一张表格,结果mysql卡住了,我重启了Ubuntu。我尝试过清理项目,但并没有成功。
今天早上,当我再次尝试连接web服务器时,第一次就完美地工作了。
在第一次重新启动后,操作系统识别到出现了问题,在第二次重新启动后问题得以解决。希望这能节省某些人“可能”遇到此类问题的时间!

1
我遇到了同样的问题,我通过以下步骤解决了这个问题:如果正在开发jsp,请将mysql连接器放入WEB-INF->lib文件夹中,然后在eclipse中右键单击并选择build-path -> configure build patha,在库选项卡中添加外部jar文件,指定lib文件夹所在的位置。

0

(如果您的URL正确,但仍然收到该错误消息)请按照以下步骤在NetBeans中设置类路径:

  1. 在项目工作区中创建一个新文件夹,并添加已下载的.jar文件(例如:mysql-connector-java-5.1.35-bin.jar)
  2. 右键单击您的项目 > 属性 > 库 > 添加jar/文件夹 选择刚刚创建的文件夹中的jar文件。然后点击确定。

现在您将看到.jar文件已包含在库中。现在您将不需要使用Class.forName("com.mysql.jdbc.Driver");这一行代码了。

如果上述方法不起作用,请检查mysql-connector版本(例如:5.1.35),并尝试更新或适合您的版本。


0
只是告诉我的解决方案:在我的情况下,库和项目没有自动添加到类路径中(我不知道为什么),即使点击“添加到构建路径”选项。因此,我通过运行 -> 运行配置 -> 类路径并通过那里添加了我需要的所有内容。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接