在我的主机上,我安装了Wamp,我可以使用PHP或浏览器进行连接 . 我的客户端是一个带有Linux的虚拟机,我正在尝试连接到主机上的数据库以在那里添加一些条目 .
这是我的代码:
Connection conn = null;
try {
String url = "jdbc:mysql://192.168.1.236:8080/fps";
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection(url, "username", "password");
System.out.println("Database connection established");
} catch (Exception e) {
e.printStackTrace();
} finally {
if (conn != null) {
try {
conn.close();
System.out.println("Database connection terminated");
} catch (Exception e) {}
}
}
我必须提一下,我正在尝试通过本地网络进行连接,并且我还设置了Wamp以便在端口8080上工作(可以在上面看到) . 另一件事是,在虚拟机上,我可以使用浏览器访问数据库 .
上面的代码生成错误:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链路故障成功发送到服务器的最后一个数据包是0毫秒前 . 驱动程序未收到来自服务器的任何数据包 . at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)at java.lang.reflect.Constructor .newInstance(Constructor.java:526)位于com.mysql.jdbc.Util.handleNewInstance(Util.java:400)的com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1038)com.mysql.jdbc . MysqlIO.readPacket(MysqlIO.java:628)位于com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1014)的com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2249)com.mysql.jdbc com.mysql.jdbc的com.mysql.jdbc.ConnectionImpl . (ConnectionImpl.java:794)的com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2079)上的.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2280) .JDBC4Connection . (JDBC4Connection.java:44)at s的sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)在com.mysql的java.lang.reflect.Constructor.newInstance(Constructor.java:526)的sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)中的un.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) .jdbc.Util.handleNewInstance(Util.java:400)位于com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399),位于java的com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325) . 在DatabaseConnection.main上的java.sql.DriverManager.getConnection(DriverManager.java:215)中的sql.DriverManager.getConnection(DriverManager.java:571)(DatabaseConnection.java:12)引起:java.io.EOFException:无法读取来自服务器的响应预计读取4个字节,在连接意外丢失之前读取0个字节 . 在com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2926)com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:560)... 16更多
我相信问题可能来自客户端上的mysql设置,在文件/etc/mysql/my.cnf中,但我真的不知道如何更改它们,因为我没有找到针对这种特殊情况的示例 . 我还认为,当mysql正常使用3306时,我将端口更改为8080的事实可能会导致问题 .
所以,问题是,我怎么能做到这一点?谢谢 .
编辑:我还想添加端口更改(到8080)是在服务器上的apache的conf文件中进行的 . 默认情况下这是80.所以也许它不应该影响到mysql的3306 .