2011-03-07 62 views
0

嘿傢伙,我在我的主機上運行一個MySQL服務器。 下面提供了代碼。當我嘗試從另一臺連接到相同路由器的機器運行相同的代碼時。我得到了我在代碼下面提供的異常。嘿需要幫助與MySQL異常我越來越abt通信鏈接失敗

請幫忙。代碼: import java.sql。 ; import java.io.;

public class Login{ 
public static void main(String[] args) throws IOException { 
BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); 
Connection conn = null; 
String url = "jdbc:mysql://"+br.readLine()+":3306/"; 
String dbName = "p2p"; 
String driver = "com.mysql.jdbc.Driver"; 
String userName = "root"; 
String password = "123"; 
System.out.println("Please input Username:"); 
String user=br.readLine(); 
System.out.println("Please input Password:"); 
String pass=br.readLine(); 

try { 
    Class.forName(driver).newInstance(); 
    conn = DriverManager.getConnection(url+dbName,userName,password); 
    String sql="select password from newuser where username='"+user+"'"; 
    Statement stmt=null; 
    ResultSet rs=null; 

    try{ 
     stmt=conn.createStatement(); 
     rs=stmt.executeQuery(sql); 
    if(rs.next()) 
    { 
     if(rs.getString("password").equals(pass)) 
      System.out.println("true"); 
     else 
      System.out.println("false"); 
    } 
    else System.out.println("false"); 
    } 
    catch(Exception e){System.out.println(e);} 
    conn.close(); 
    } catch (Exception e) { 
    e.printStackTrace(); 
} 

}}

例外: -

com.mysql.jdbc.CommunicationsException: Communications link failure 

The last packet sent successfully to the server was 0 milliseconds ago. The driv 
er has not received any packets from the server. 
     at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1 
112) 
     at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:346) 
     at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2334) 
     at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2 
371) 
     at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2163) 
     at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:794) 
     at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:374) 
     at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java 
:305) 
     at java.sql.DriverManager.getConnection(DriverManager.java:525) 
     at java.sql.DriverManager.getConnection(DriverManager.java:171) 
     at Login.main(login.java:20) 
Caused by: java.net.UnknownHostException: 192.168.1.23306: 192.168.1.23306 
     at java.net.InetAddress.getAllByName0(InetAddress.java:1128) 
     at java.net.InetAddress.getAllByName0(InetAddress.java:1098) 
     at java.net.InetAddress.getAllByName(InetAddress.java:1061) 
     at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.ja 
va:244) 
     at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:295) 
     ... 9 more 

回答

0

在同一網絡上的機器或允許在同一個VLAN。你得到的錯誤意味着程序甚至無法看到MySQL服務器。另一種可能性,請檢查MySQL上的帳戶,並確保兩臺服務器都在允許的帳戶HOSTS中。

+0

我更新了mysql服務器中的權限表以允許特定用戶登錄。 – anonymous123 2011-03-07 08:52:04

+0

這是否有效?其他人可能會得到這個錯誤,並可能想知道如何解決它。 – ProNeticas 2011-03-09 02:11:31

0

你的堆棧跟蹤有這樣一行:

java.sql.DriverManager.getConnection(DriverManager.java:171) at Login.main(login.java:20) Caused by: java.net.UnknownHostException: 192.168.1.23306: 192.168.1.23306 at 

這意味着你的Java進程不知道主機地址192.168.1.23306

+0

mysql服務器在192.168.1.2上 – anonymous123 2011-03-07 08:51:25

+0

那麼堆棧跟蹤說192.168.1.23306的未知主機。這意味着要麼在192.168.1.2:3306上沒有運行MySQL,要麼在從System.in讀取主機名時出現問題。你可以改變這一行的網址爲: String url =「jdbc:mysql://192.168.1.2:3306 /」; 並嘗試運行您的代碼。 – anubhava 2011-03-07 14:22:28

0

嗨,我得到了錯誤。 而不是使用br.readLine()當我把mysql服務器m/c的實際IP程序運行。

+0

在這種情況下,請您將我的答案標記爲「已接受」?如果你看到我的答案和評論,我確實建議你,即改變你的網址爲String url =「jdbc:mysql://192.168.1.2:3306 /」;在你的代碼中。 – anubhava 2011-03-16 04:12:15

相關問題