mysql:9640
From: "Kageyama Takahiro" <"Kageyama Takahiro" <kageyama329@xxxxxxxxxx>>
Date: Mon, 14 Jun 2004 20:23:36 +0900
Subject: [mysql 09640] Insert 毎に接続・切断を繰り返すと不特定な場所でエラーが発生する。
初めまして、かげやまと申します。 書き込みをする度に接続・切断という処理を繰り返し行うと、何回目かでエラーに なる問題が発生しました。毎回違う回数でエラーになります。 どうしたら発生しないようでできますでしょうか? 以下に、環境・再現方法・エラーメッセージの順番で説明します。 ・環境:WindowsXP HomeEdition MySQL(4.0.15) JDBC Driver(mysql-connector-java-3.0.7-stable-bin.jar) 両方とも同一 PC で稼動しています。 ・再現方法:以下の Test.java をコンパイルして、test.bat を実行します。 ドライバー・クラスファイル・バッチファイルは全て同一ディレクトリ に 置いてください。 -------------------------------- test.bat ------------------------------------- java -classpath .;.\mysql-connector-java-3.0.7-stable-bin.jar Test -------------------------------- Test.java ------------------------------------ import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Properties; class Test { private static final String CREATE_QUERY = "CREATE TABLE IF NOT EXISTS test"+ " ( ip VARCHAR(255) PRIMARY KEY)"; private static final String INSERT_QUERY="INSERT INTO test (ip) VALUES (?);"; private static final String FLUSH_QUERY = "FLUSH TABLES;"; public static void main(String[] args) { try { loadMysqlDriver(); createTable(); loop(); } catch (SQLException e) { e.printStackTrace(); } } static void loadMysqlDriver() { try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } } static Connection getNewConnection() throws SQLException { Properties info = new Properties(); info.setProperty("user", ""); info.setProperty("password", ""); info.setProperty("useUnicode", "true"); info.setProperty("characterEncoding", "shift_jis"); return DriverManager.getConnection("jdbc:mysql://localhost/test", info); } static void createTable() throws SQLException { Connection conn = null; PreparedStatement pstmt = null; try { conn = getNewConnection(); pstmt = conn.prepareStatement(CREATE_QUERY); pstmt.executeUpdate(); } finally { if (pstmt != null) { pstmt.close(); } if (conn != null) { conn.close(); } } } static void loop() throws SQLException { String COMMA = "."; for (int i = 0; i < 256; i++) { for (int j = 0; j < 256; j++) { for (int k = 0; k < 256; k++) { for (int l = 0; l < 256; l++) { StringBuffer buf = new StringBuffer(); buf.append(i).append(COMMA).append(j).append(COMMA); buf.append(k).append(COMMA).append(l); String ip = buf.toString(); System.out.println("ip = " + ip); insert(ip); } showStatus(); } } } } static void insert(String ip) throws SQLException { Connection conn = null; PreparedStatement pstmt = null; try { conn = getNewConnection(); pstmt = conn.prepareStatement(INSERT_QUERY); pstmt.setString(1, ip); pstmt.executeUpdate(); } finally { if (pstmt != null) { pstmt.close(); } if (conn != null) { conn.close(); } } } static void showStatus() throws SQLException { String TYPE = "Threads_connected"; Connection conn = null; PreparedStatement pstmt = null; ResultSet result = null; try { conn = getNewConnection(); pstmt = conn.prepareStatement("show status;"); result = pstmt.executeQuery(); while (result.next()) { String key = result.getString(1); if (TYPE.equals(key)) { System.out.println("接続数 = " + result.getString(2)); break; } } } finally { if (result != null) { result.close(); } if (pstmt != null) { pstmt.close(); } if (conn != null) { conn.close(); } } } } ・エラーメッセージ ip = 0.0.0.0 ip = 0.0.0.1 ip = 0.0.0.2 ・ ・ ・ ・ ip = 0.0.15.103 ip = 0.0.15.104 java.sql.SQLException: Unable to connect to any hosts due to exception: java.net.BindException: Address already in use: connect at com.mysql.jdbc.Connection.createNewIO(Connection.java:1592) at com.mysql.jdbc.Connection.<init>(Connection.java:486) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java :326) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at Test.getNewConnection(Test.java:37) at Test.insert(Test.java:77) at Test.loop(Test.java:66) at Test.main(Test.java:19) 以上です。 _________________________________________________________________ メッセンジャーで総額1億円プレゼント! http://im.msn.co.jp/home.htm
-> 9640 2004-06-14 20:23 ["Kageyama Takahiro" ] Insert 毎に接続・切断を繰り返すと不特定な場所でエラーが発生する。 9641 2004-06-14 20:59 ┣[ML account <ml@xxxxx] 9642 2004-06-14 21:31 ┣["Haruki Nakayama" <h] 9645 2004-06-15 10:24 ┃┗[Murayama Toshikiyo <] 9643 2004-06-14 23:42 ┣[<oouchi@xxxxxxxxxx> ] 9644 2004-06-15 00:01 ┃┗[<oouchi@xxxxxxxxxx> ] 9651 2004-06-15 18:21 ┗[<yasuyuki@xxxxxxxxxx] 9652 2004-06-15 19:00 ┣["HIROSE, Masaaki" <h] 9654 2004-06-15 19:29 ┃┗[ML account <ml@xxxxx] 9658 2004-06-16 01:47 ┃ ┗["HIROSE, Masaaki" <h] 9655 2004-06-15 19:42 ┗[seiji takegata <take]