我通过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
答案 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连接器。不需要任何类路径设置.....
如果您仍然遇到问题,请发送您的查询...