2018-11-16 10:46
2018-11-19 21:35
前言
本篇文章记录的是本人在使用Java程序连接另一台电脑(同一局域网)上的Mysql数据库的过程中遇到的各种问题及解决方案。希望能给遇到同样问题的人提供一些帮助。当初本人遇到这些问题的时候,也是在各位大神的博客中找到的答案,本篇博客在某种程度上也算是这几个问题的答案集合吧。
软件环境
客户端: Windows10 + Java [ IP: 192.168.76.10 ]
数据库服务端: Ubuntu 16.04 + Mysql 14.14 [ IP: 192.168.76.1 ]
服务端的Mysql就是用最普通的 apt-get install 命令来安装的。安装完以后没有其它任何设置操作。
客户端使用的Java代码
1 final String driver = "org.gjt.mm.mysql.Driver";
2 final String url = "jdbc:mysql://192.168.76.1:3306/mysql";
3 final String user = "root";4 final String password = "123456";5 Connection conn = null;6 PreparedStatement pstmt = null;7 ResultSet rs = null;8
9 try{10 Class.forName(driver);11 conn =DriverManager.getConnection(url,user,password);12 String sql = "SELECT * FROM user";13 pstmt =conn.prepareStatement(sql);14 rs =pstmt.executeQuery();15 while(rs.next()){16 String h = rs.getString(1);17 String u = rs.getString(2);18 System.out.println("host:" + h + ",user:" + u);
19 }20 }catch(Exception e){21 e.printStackTrace();
22 }
数据库服务端确认Mysql正常运行后,便可以尝试运行上面的代码去连接了。此时,便有几率遇到下面一系列问题。
问题一:报“连接超时”错误
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was0milliseconds ago. The driver has not received any packets from the server.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:981)
at com.mysql.jdbc.MysqlIO.(MysqlIO.java:339)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2253)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2286)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2085)
at com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:795)
at com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:44)
at sun.reflect.Nat