首页 文章

从Selenium Java测试脚本到MySQL数据库的连接失败

提问于
浏览
0

我正在尝试使用以下程序连接到MySQL数据库 . 根据我呈现连接字符串的方式,我会收到以下错误 .

IP地址仅从':'与'mysql'分隔:conn = DriverManager.getConnection(“jdbc:mysql:[valid ip address] / localhost:3306 / [valid database name]”,“[valid username]”,“[有效密码]“);

SQLState:08001 VendorError:0 java.sql.SQLException:没有为jdbc找到合适的驱动程序:mysql:[valid ip address] / localhost:3306 / [valid database name]

IP地址'mysql'由':http://'分隔:conn = DriverManager.getConnection(“jdbc:mysql:[http://valid ip address] / localhost:3306 / [valid database name] "," [valid username] "," [valid password]”);

SQLState:08001 VendorError:0 java.sql.SQLException:没有为jdbc找到合适的驱动程序:mysql:[http://valid ip address] / localhost:3306 / [valid database name]

通过'://'与'mysql'分隔的IP地址:conn = DriverManager.getConnection(“jdbc:mysql:// [valid ip address] / localhost:3306 / [valid database name]”,“[valid username]” ,“[有效密码]”);

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链路故障成功发送到服务器的最后一个数据包是0毫秒前 . 驱动程序未收到来自服务器的任何数据包 . SQLState:08S01 VendorError:0

在后一种情况下,堆栈跟踪提供'引起:java.net.ConnectException:连接被拒绝:连接'

在所有情况下,堆栈跟踪还表明设置变量'conn'的代码行正在抛出异常 .

请注意,在程序列表中,方括号内的文本表示混淆代码,并且括号实际上不在程序中 .

我的问题是,我是否真的安装了所需的驱动程序,或者我的连接字符串是否有问题?还有其他一些我没想过的问题吗?

Code follows

package [package name];

import org.junit.Test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class SQLConnectionTest
{

    @Test
    public void startWebDriver() 
    {
        try 
        {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
        } 
        catch (Exception ex) 
        {
            System.out.println(ex.getMessage());
        }

        Statement stmt = null;
        Connection conn = null;
        ResultSet rs = null;

        try 
        {
            conn = DriverManager.getConnection("jdbc:mysql://[valid ip address]/localhost:3306/[valid database name]","[valid username]","[valid password]");

            // Do something with the Connection

        } 
        catch (SQLException ex) 
        {
            // handle any errors
            System.out.println("SQLState: " + ex.getSQLState());
            System.out.println("VendorError: " + ex.getErrorCode());
            ex.printStackTrace();
        }

        try 
        {
            conn.close();
        } 
        catch (SQLException e) 
        {
            System.out.println(e.getMessage());
        }
    }
}

有关环境的一些信息:

IDE:Eclipse Luna Service Release 2(4.4.2),Build id:20150219-0600

jre系统库:jre1.8.0_45

MySQLConnector库:mysql-connector-java-5.1.36.jar(出现在Package Explorer的Referenced Libraries部分中)

我还安装了mysql-connector-java-gpl-5.1.36,jdk-8u45-windows-x64和selenium-java-2.45.0

我很乐意根据需要提供任何进一步的信息 .

1 回答

  • 0

    连接过程对我来说似乎没问题,但是连接URL中有一些奇怪的东西 . 你有

    conn = DriverManager.getConnection("jdbc:mysql://[valid ip address]/localhost:3306/[valid database name]","[valid username]","[valid password]");
    

    它有IP地址和localhost:端口 . 这不是有效的URL,您必须删除localhost或IP地址:

    conn = DriverManager.getConnection("jdbc:mysql://[valid ip address]:3306/[valid database name]","[valid username]","[valid password]");
    

    要么

    conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/[valid database name]","[valid username]","[valid password]");
    

    这应该够了吧 .

相关问题