找不到合适的mysql驱动程序(远程调试)

时间:2011-07-27 15:24:13

标签: java mysql jdbc

您好我发现了一个看似常见的问题,我无法与mysql数据库进行交互。找不到合适的驱动程序。 我在同一个问题上跟踪了大多数主题,但是我无法复制他们的解决方案,因此我发布了自己的具体问题。

(主要是这个主题:I can't load the JDBC driver for MySQL

我的代码:

public DBManager(){
    try {
        //Class.forName("com.mysql.jdbc.Driver");
        DriverManager.registerDriver(new com.mysql.jdbc.Driver()); 

        con=DriverManager.getConnection("jdbc:mysql:3306//localhost/test","root","root");
        //con=DriverManager.getConnection(c);
        if(!con.isClosed()) {
            con.close();
        }
    }
    catch (SQLException e) {
        e.printStackTrace();
    }

现在,我读到了较新的驱动程序,你不需要Class.forName()或registerDriver(); 我已经试过了两次,但仍然无法让它发挥作用。

事情是在Windows机器上开发,使用eclipse Indigo和Connector / J 5.1.17

并在具有相同连接器的远程linux上部署(和调试)。

使用

启动调试会话

java -Xdebug -Xrunjdwp:transport = dt_socket,address = 8998,server = y -classpath /home/dev/mysql-connector-java-5.1.17-bin.jar -jar devserver.jar

我得到了那个例外。有什么帮助吗?

我来自一个沉重的c#开发环境,所以如果我必须干涉类路径,那么请尝试逐步进行,因为我不太熟悉它。

1 个答案:

答案 0 :(得分:5)

  

SQLException:没有合适的驱动程序

只要DriverManager#getConnection()无法为给定的连接URL找到合适的驱动程序,您就会收到此异常。当Driver#acceptsURL()已为任何已加载的驱动程序返回false时,就会发生这种情况。

事实上,您的连接网址错误:

jdbc:mysql:3306//localhost/test

应该是:

jdbc:mysql://localhost:3306/test

另请参阅MySQL JDBC manual

  

MySQL Connector / J的JDBC URL格式如下,方括号([,])中的项是可选的:

jdbc:mysql://[host][,failoverhost...][:port]/[database] »
[?propertyName1][=propertyValue1][&propertyName2][=propertyValue2]...
     

如果未指定主机名,则默认为127.0.0.1。如果未指定端口,则默认为3306,即MySQL服务器的默认端口号。

jdbc:mysql://[host:port],[host:port].../[database] »
[?propertyName1][=propertyValue1][&propertyName2][=propertyValue2]...
     

如果未指定数据库,则将建立连接而不使用默认数据库。