- PR -

JDBCでMYSQL接続するとタイムアウトする

1
投稿者投稿内容
がつん
ベテラン
会議室デビュー日: 2003/07/07
投稿数: 62
お住まい・勤務地: Sydney
投稿日時: 2007-09-21 16:33
こんにちは。
JDBCを使用して初めてMYSQLに接続を試みたのですが、タイムアウトになってしまい、
原因が特定できず、完全にハマっております・・・

[環境]
OS:Fedora Core 3
DB:MYSQL 4.1
JAVA:j2sdk1.4.2.5

[現象]
MYSQL接続を試みるもタイムアウトで例外を返す。

[コード]
コード:
import java.sql.*;
public class ConnectTest {
    public static void main(String[] args) throws Exception {
      Class.forName("com.mysql.jdbc.Driver").newInstance();
--ここでtime out start--
      Connection con = DriverManager.getConnection
                  ("jdbc:mysql://localhost/test","dev", "dev");
--ここでtime out end  --
      con.close();
    }
}



[エラーの内容]
コード:
Exception in thread "main" com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

java.net.ConnectException
MESSAGE: Connection timed out

STACKTRACE:

java.net.ConnectException: Connection timed out
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:305)
        at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:171)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:158)
        at java.net.Socket.connect(Socket.java:464)
        at java.net.Socket.connect(Socket.java:414)
        at java.net.Socket.<init>(Socket.java:310)
        at java.net.Socket.<init>(Socket.java:154)
        at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:256)
        at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:271)
        at com.mysql.jdbc.Connection.createNewIO(Connection.java:2744)
        at com.mysql.jdbc.Connection.<init>(Connection.java:1553)
        at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
        at java.sql.DriverManager.getConnection(DriverManager.java:512)
        at java.sql.DriverManager.getConnection(DriverManager.java:171)
        at ExportSalesExcel.main(ExportSalesExcel.java:18)
** END NESTED EXCEPTION **

Last packet sent to the server was 3 ms ago.
        at com.mysql.jdbc.Connection.createNewIO(Connection.java:2820)
        at com.mysql.jdbc.Connection.<init>(Connection.java:1553)
        at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
        at java.sql.DriverManager.getConnection(DriverManager.java:512)
        at java.sql.DriverManager.getConnection(DriverManager.java:171)
        at ExportSalesExcel.main(ExportSalesExcel.java:18)



[試したこと]
・mysql-connector-java-5.0.7-bin.jarのCLASSPATH確認
→上記コード中「Class.forName("com.mysql.jdbc.Driver").newInstance();」
が問題なく実行されているのでCLASSPATHは正常に通っているという認識でOKでしょうか

・devユーザにtestDBへの権限付与
・/etc/hostsファイルに「localhost localhost.localdomain 127.0.0.1」を記述


どなたか、ヒント等ご教授いただけませんでしょうか。
よろしくお願いいたします。
朝日奈ありす
大ベテラン
会議室デビュー日: 2007/05/02
投稿数: 189
お住まい・勤務地: 最北の地
投稿日時: 2007-09-22 22:51
コード:
import java.sql.*;
public class ConnectTest {
    public static void main(String[] args) throws Exception {
      Class.forName("com.mysql.jdbc.Driver");
      Connection con = DriverManager.getConnection("jdbc:mysql://localhost/test","dev", "dev");
      con.close();
    }
}




という記述にしたらどうですか?
柴田 たけお
常連さん
会議室デビュー日: 2007/09/19
投稿数: 40
お住まい・勤務地: 米国カリフォルニア州オレンジカウンティー
投稿日時: 2007-09-23 00:41
まちがっているかもしれませんがそのJAVAのマシンで

DOSかSHELLで
telnel 127.0.0.1 3306 (別で明示的に指定していればその番号)

とやってすぐに反応がかてってくるでしょうか?
CONNECTION TIMEOUTというと、そもそも、接続待ち状態でエラーになっているよう
きがするので。

あ、あと
jdbc:mysql://localhost/test:3306
でためしてみるとか。
柴田 たけお
常連さん
会議室デビュー日: 2007/09/19
投稿数: 40
お住まい・勤務地: 米国カリフォルニア州オレンジカウンティー
投稿日時: 2007-09-23 01:19
すみません
まちがったこといったかもしれません
URLの文法は問題なさそうですし
(http://ft-lab.ne.jp/f_labo/tec/java/jdbc.html)

netstat でMYSQLの3306がオープンしていることをたしかめ
mysql test -u dev -pdev
でコマンドでの接続自体に問題がないことをたしかめてみたうえで
telnet localhost 3306
でMYSQL側ではlocalhostにたいして接続ができる状態であることをたしかめ

jdbc:mysql://localhost:3306/test
jdbc:mysql://127.0.0.1:3306/test
をためしてみてはいかがでしょうか?

はずしていたらすみません。
1

スキルアップ/キャリアアップ(JOB@IT)