Не удается установить соединение JDBC с MySQL (с использованием Java, IntelliJ и Linux) - PullRequest
5 голосов
/ 20 января 2010

У меня возникают проблемы при попытке установить соединение с базой данных, используя код ниже:

  try {
        Class.forName("com.mysql.jdbc.Driver");
        Properties p = new Properties();
        p.put("user", user_name);
        p.put("password", password);
        connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1/jsp_test", p);
    } catch (SQLException ex) {
        // handle any errors
        ex.printStackTrace();
        System.out.println("SQLException: " + ex.getMessage());
        System.out.println("SQLState: " + ex.getSQLState());
        System.out.println("VendorError: " + ex.getErrorCode());
        return false;
    } catch (ClassNotFoundException e) {
        e.printStackTrace();  
    }

Выводится сообщение об ошибке:

/ USR / Библиотека / JVM / Java-6-OpenJDK / бен / Java -Didea.launcher.port = 7532 -Didea.launcher.bin.path = / usr / bin / idea / bin -Dfile.encoding = UTF-8 - classpath /usr/lib/jvm/java-6-openjdk/jre/lib/jce.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/about. баночка: /usr/lib/jvm/java-6-openjdk/jre/lib/resources.jar: /usr/lib/jvm/java-6-openjdk/jre/lib/management-agent.jar: / USR / Библиотека /jvm/java-6-openjdk/jre/lib/jsse.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/charsets.jar:/usr/lib/jvm/java-6-openjdk /jre/lib/rt.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/ext/localedata.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/ext /sunjce_provider.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/ext/sunpkcs11.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/ext/dnsns.jar : / дома / отхода ко сну / Java Проекты / db_demo / out / production / db_demo: /opt/java/jre/lib/ext/mysql-connector-java-5.1.10-bin.jar: /usr/bin/idea/lib/idea_rt.jar com.intellij .rt.execution.application.AppMain Главный com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Отказ линии связи

Последний пакет успешно отправлен сервер был 0 миллисекунд назад. Водитель не получил пакетов с сервера. в sun.reflect.NativeConstructorAccessorImpl.newInstance0 (Native Метод) в sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:57) в sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45) в java.lang.reflect.Constructor.newInstance (Constructor.java:532) в com.mysql.jdbc.Util.handleNewInstance (Util.java:406) в com.mysql.jdbc.SQLError.createCommunicationsException (SQLError.java:1074) в com.mysql.jdbc.ConnectionImpl.createNewIO (ConnectionImpl.java:2214) в com.mysql.jdbc.ConnectionImpl. (ConnectionImpl.java:781) в com.mysql.jdbc.JDBC4Connection. (JDBC4Connection.java:46) в sun.reflect.NativeConstructorAccessorImpl.newInstance0 (Native Метод) в sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:57) в sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45) в java.lang.reflect.Constructor.newInstance (Constructor.java:532) в com.mysql.jdbc.Util.handleNewInstance (Util.java:406) в com.mysql.jdbc.ConnectionImpl.getInstance (ConnectionImpl.java:352) в com.mysql.jdbc.NonRegisteringDriver.connect (NonRegisteringDriver.java:284) в java.sql.DriverManager.getConnection (DriverManager.java:620) в java.sql.DriverManager.getConnection (DriverManager.java:169) в database.Database.connect (Database.java:80) в Main.main (Main.java:13) в sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Метод) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke (Method.java:616) в com.intellij.rt.execution.application.AppMain.main (AppMain.java:110) Вызванный: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Отказ линии связи

Последний пакет успешно отправлен сервер был 0 миллисекунд назад. Водитель не получил пакетов с сервера. в sun.reflect.NativeConstructorAccessorImpl.newInstance0 (Native Метод) в sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:57) в sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45) в java.lang.reflect.Constructor.newInstance (Constructor.java:532) в com.mysql.jdbc.Util.handleNewInstance (Util.java:406) вcom.mysql.jdbc.SQLError.createCommunicationsException (SQLError.java:1074) в com.mysql.jdbc.MysqlIO. (MysqlIO.java:343) в com.mysql.jdbc.ConnectionImpl.createNewIO (ConnectionImpl.java:2137) ... еще 18 причин: java.net.ConnectException: соединение отказался в java.net.PlainSocketImpl.socketConnect (Native Метод) в java.net.AbstractPlainSocketImpl.doConnect (AbstractPlainSocketImpl.java:310) в java.net.AbstractPlainSocketImpl.connectToAddress (AbstractPlainSocketImpl.java:176) в java.net.AbstractPlainSocketImpl.connect (AbstractPlainSocketImpl.java:163) в java.net.SocksSocketImpl.connect (SocksSocketImpl.java:384) в java.net.Socket.connect (Socket.java:542) в java.net.Socket.connect (Socket.java:492) в java.net.Socket. (Socket.java:389) в java.net.Socket. (Socket.java:232) в com.mysql.jdbc.StandardSocketFactory.connect (StandardSocketFactory.java:253) в com.mysql.jdbc.MysqlIO. (MysqlIO.java:292) ... еще 19 SQLException: Отказ линии связи

Последний пакет успешно отправлен сервер был 0 миллисекунд назад. Водитель не получил пакетов с сервера. SQLState: 08S01 VendorError: 0

Процесс завершен с кодом выхода 0

Я, буквально, не знаю, как устранить это сообщение об ошибке. База данных существует. Имя пользователя и пароль существуют. В настоящее время я не добавляю таблиц в базу данных, но не думаю, что это может быть проблемой, поскольку я все-таки только устанавливаю соединение ...

Я могу предоставить дополнительную информацию, если потребуется. Я чувствую, что много пробовал. Кто-нибудь знает какие-либо способы получения дополнительной информации о том, как и почему это терпит неудачу?

Спасибо за вашу помощь! :)

Ответы [ 4 ]

6 голосов
/ 20 января 2010

Из вашей строки подключения эта база данных должна находиться на локальном компьютере. Можете ли вы попробовать запустить эту команду, чтобы убедиться, что сокет открыт для соединений?

telnet 127.0.0.1 3306

и убедитесь, что он подключается? Возможно, вы не настроили свой экземпляр mysql для прослушивания соединений с этого компьютера или по этому адресу интерфейса. Если соединение не установлено, вам нужно изменить конфигурацию mysql, например:

http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html

1 голос
/ 18 августа 2012

вы можете попробовать один из следующих

"jdbc:mysql://localhost:3306/jsp_test","username","password"

или

"jdbc:mysql://'your machines ip (without quote)':3306/jsp_test","username","password"

или

"jdbc:mysql://127.0.0.1:3306/jsp_test","username","password"

в качестве строки подключения.

1 голос
/ 24 декабря 2011

Вы можете попробовать это вместо:

connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/jsp_test","user_name","password");
1 голос
/ 21 сентября 2010

У меня были те же симптомы, но для меня решение было изменить адрес привязки на 0.0.0.0 в /etc/mysql/my.cnf

(просто опубликовать это для тех, кто ищет ответ на этот вопрос)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...