无法使用Java连接到mysql数据库

时间:2011-02-24 13:16:50

标签: java mysql

我通过Java连接到MySQL时遇到异常。我下载了MySQL Java连接器并将其添加到classpath。我试图连接到MySQL表但没有成功。

我还尝试 telnet localhost 3306 ,但收到以下错误:“提供了nodename或servname,或者未知”

代码如下:

//import java.sql.Connection;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class ConnectToDatabase {

    public static void main(String[] args) throws Exception{    
        //Accessing driver from the JAR file 
        Class.forName ("com.mysql.jdbc.Driver").newInstance (); 

        Connection con = DriverManager.getConnection(
            "jdbc:mysql://localhost:3306/cldatabase", "root", "root");

        //Here we create our query
        PreparedStatement statement = con.prepareStatement(
            "SELECT * FROM profiles");

        ResultSet result = statement.executeQuery();
        while(result.next()){ 
        System.out.println(result.getString("firstName") + " " +
            result.getString("lastName"));
    }
}

抛出了这个异常:

Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.
    CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. 

我的mac上安装了xampp。

当我运行“ps -ef | grep mysql”

时会出现这种情况

0 1694 1 0 0:00.02 ?? 0:00.03 / bin / sh / Applications / XAMPP / xamppfiles / bin / mysqld_safe --datadir = / Applications / XAMPP / xamppfiles / var / mysql --pid-file = / Applications / XAMPP / xamppfiles / var / mysql / Ts- sMacBook-Air.local.pid    -2 1792 1694 0 0:00.07 ?? 0:00.28 / Applications / XAMPP / xamppfiles / sbin / mysqld --basedir = / Applications / XAMPP / xamppfiles --datadir = / Applications / XAMPP / xamppfiles / var / mysql --user = nobody --log-error = / Applications /XAMPP/xamppfiles/var/mysql/k-Air.local.err --pid-file = / Applications / XAMPP / xamppfiles / var / mysql / -MacBook-Air.local.pid --socket = / Applications / XAMPP / xamppfiles / var / mysql / mysql.sock --port = 3306   501 1814 1484 0 0:00.00 ttys000 0:00.00 grep mysql

2 个答案:

答案 0 :(得分:3)

对此similar question on ServerFault帮助做出任何答案吗?

  

1)验证mysql绑定的地址   到,它可能是127.0.0.1(仅)   我认为这是默认的(在   至少在标准的Ubuntu服务器上)。   你必须评论出来   my.cnf中的bind-address参数   绑定到所有可用的地址(你   不能选择多个,它是一个或   全部)。

     

2)如果它与127.0.0.1绑定了   无法使用“localhost”连接,make   确定它没有解决到IPv6   localhost地址而不是IPv4。 (要么   只需使用IP地址)

     

3)对端口进行双重和三重检查   那个mysql在听。

     

4)确保你使用的是正确的   JDK的JDBC连接器。

     

5)确保你没有这样做   一些非常愚蠢的事情   mysql与--skip-networking。

当您运行“lsof -i :3306”时,您会得到什么?

答案 1 :(得分:1)

如果您在Class.forName(“com.mysql.jdbc.Driver”)上遇到问题;然后在以下位置复制mysql连接器..确定它将工作..C:\ Program Files \ Apache Software Foundation \ Tomcat 7.0 \ webapps \ lib \ WEB-INF..note在webapps文件夹中没有名为lib的目录然后手动创建lib和WEB-INF目录并在其中粘贴mysql连接器。不需要任何类路径设置.....

如果您仍然遇到问题,请发送您的查询...