2012-02-14 3 views
0

は、誰かが私に説明することができます:のSQLException:この行が動作する理由通信リンク障害(Javaの/ mysqlの)

conn = DriverManager.getConnection("jdbc:mysql://myWebsite.com:3306/schemaName?user=userX&password=passwordX"); 

しかし、この行がありません:

conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/schemaName?user=userX&password=passwordX"); 

私は通信リンク障害を取得ローカルホスト(または127.0.0.1)を介してアクセスしようとしています。しかし、PHPとMySQLQuery BrowserとMySQL Aministratorを介してlocalhost経由でデータベースにアクセスできます。

ここで必要私が使用している全体の方法だ場合:任意の助け

public Database() throws Exception { 
Class.forName("com.mysql.jdbc.Driver").newInstance(); 

try { 
    conn = DriverManager.getConnection("jdbc:mysql://myWebsite.com:3306/schemaName?user=userX&password=passwordX"); 
    // Next line does not work. 
    // conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/schemaName?user=userX&password=passwordX"); 
    } catch (SQLException ex) { 
     displaySQLException(ex); // Seperate routine to display errors. 
    } 
} 

おかげで、第二のコードで リチャード

+0

ない「userXの」ローカルホストからデータベースにアクセスする権限を持っていますか? PHPandMySQlクエリブラウザがあり、MySQLの管理者は、ローカルホストからデータベースにアクセスできる別のユーザを使用します。 –

答えて

2

それはあなたのmysqldが代わりにすべてのインターフェイスのイーサネットインタフェース(0.0.0.0)またはローカルに特異的にbindingであることが可能ですホストインタフェース(127.0.0.1)。デーモンは次のコマンドでリッスンしているインターフェイスあなたがチェックすることができます* nixのプラットフォームで

$ netstat -ln|grep 3306 
tcp  0  0 0.0.0.0:3306    0.0.0.0:*     LISTEN 
+0

私はjavaやmysqlに精通しているわけではないので、他のアプリに問題がなかったときに、なぜこれが機能するのか分かりません。 回答したすべての方に感謝します。 –

+0

@RichardRhyan他のアプリケーションでは、tcpではなく[socket](http://dev.mysql.com/doc/refman/5.5/en/server-options.html#option_mysqld_skip-networking)インタフェースを使用している可能性があります。 – jamesallman

0

conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/schemaName? 
       user=userX&password=passwordX"); 

は、それが接続しようとしますローカルホスト上のマシン上のmysql(コードが実行されている)。あなたのマシン上のmysqlが、コードを実行している場所から利用できない、または停止しているか、渡すusename/passwordが有効でないか、schemanameが存在しない可能性があります。しかし、myWebsite.comでそれはアップです。

コードに間違いはありません。 mySqlがインストールされ、実行され、ユーザー名/パスワードが有効であることを確認し、localhostでこのコードを実行するマシンにschemanameが指定されたスキーマが存在することを確認します。

0

これは

  1. MySQLサーバのように、多くの理由のために起こるかもしれないが、MySQLは、リモート接続
  2. ファイアウォールが上のリモート接続をブロックされる可能性がありますを受け入れないように設定される可能性があります
  3. ターゲット・マシン上で停止される可能性がありますポート3306
関連する問題