Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Ошибка: Communications link failure


Автор: freshAngel 1.6.2009, 23:29
Код

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

   class BookStore {

   public BookStore() {
   }

   public static void main(String[] args) {

      try {
         
         Class.forName("com.mysql.jdbc.Driver");
         //DriverManager.registerDriver(new com.mysql.jdbc.Driver());
         Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/cool", "root", "123321");

         System.out.println("connect ok " + conn.toString());

      } catch (SQLException ex) {
         System.out.println("SQLException: " + ex.getMessage());
         System.out.println("SQLState: " + ex.getSQLState());
         System.out.println("VendorError: " + ex.getErrorCode());
      } catch ( Exception ex ) {
         ex.printStackTrace();
      }
   }
}


Постоянно вылазит ексепшн: SQLException: Communications link failure

MySQL: 5.1.34
JAVA 6
mysql-connector-java-5.1.7-bin
Порт 3306 в LISTENING
Удаленные подключения разрешены (в том числе и для root)

Перепробовал все. Неработает  smile 

Автор: MisterCleric 2.6.2009, 09:32
Здравствуй. может это поможет?
http://bugs.mysql.com/bug.php?id=7763

Автор: Samotnik 2.6.2009, 10:12
freshAngel, с командной строки вообще соединение выполняется ?

Автор: freshAngel 2.6.2009, 15:20
Цитата(Samotnik @ 2.6.2009,  10:12)
freshAngel, с командной строки вообще соединение выполняется ?

В смысле с командной строки!?
Вы имеете в виду PATH!?

Вот стэк - трейс:

Код

run:
Driver loading success!
com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: 

** BEGIN NESTED EXCEPTION ** 

java.net.SocketException
MESSAGE: Invalid argument: connect

STACKTRACE:

java.net.SocketException: Invalid argument: connect
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
        at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
        at java.net.Socket.connect(Socket.java:519)
        at java.net.Socket.connect(Socket.java:469)
        at java.net.Socket.<init>(Socket.java:366)
        at java.net.Socket.<init>(Socket.java:209)
        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:2771)
        at com.mysql.jdbc.Connection.<init>(Connection.java:1555)
        at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
        at java.sql.DriverManager.getConnection(DriverManager.java:582)
        at java.sql.DriverManager.getConnection(DriverManager.java:185)
        at bookstore.BookStore.<init>(Main.java:24)
        at bookstore.BookStore.main(Main.java:40)


** END NESTED EXCEPTION **



Last packet sent to the server was 1 ms ago.
        at com.mysql.jdbc.Connection.createNewIO(Connection.java:2847)
        at com.mysql.jdbc.Connection.<init>(Connection.java:1555)
        at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
        at java.sql.DriverManager.getConnection(DriverManager.java:582)
        at java.sql.DriverManager.getConnection(DriverManager.java:185)
        at bookstore.BookStore.<init>(Main.java:24)
        at bookstore.BookStore.main(Main.java:40)
BUILD SUCCESSFUL (total time: 2 seconds)



Автор: Samotnik 2.6.2009, 16:12
Цитата(freshAngel @  2.6.2009,  15:20 Найти цитируемый пост)
В смысле с командной строки!?

нет, ну просто с SQL  можете это соединение выполнить ? 
Возможно имя/пароль/порт/название  не правильно
проверьте эти записи

Автор: tux 2.6.2009, 16:57
Можно попробовать следующее:
  • добавить в URL параметр autoReconnect: jdbc:mysql://127.0.0.1:3306/cool?autoReconnect=true 
  • убедиться что параметр bind-address в my.ini имеет такое же значение, как и в URL. То есть там должно быть bind-address=127.0.0.1
  • вообще не использовать сетевое соединение. Тогда в my.ini должны быть параметры: bind-address=localhost, skip-networking, enable-named-pipe или MySQL запущен с параметрами: --skip-networking --enable-named-pipe --socket=mysql.sock. В этом случае в URL должен быть localhost

Автор: freshAngel 2.6.2009, 21:39
Все работает.
Нужно просто разлочить порт 3306 на файрволле.
Спасибо всем за дельные советы!
P.S. 2 tux
А можно в кратце пояснить смысл команд:
bind-address, skip-networking, enable-named-pipe

Автор: tux 2.6.2009, 21:51
http://www.mysql.ru/docs/man/Command-line_options.html.

Автор: freshAngel 2.6.2009, 22:45
Цитата(tux @ 2.6.2009,  21:51)
http://www.mysql.ru/docs/man/Command-line_options.html.

Спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)