Подключение NetBeans к MySQL
Я просмотрел все и попробовал все, что смог найти по этому вопросу, поэтому я делаю пост на случай, если моя проблема будет чем-то странным.
MySQL Workbench может использовать сервер для запросов и обновлений просто отлично. Уведомитель показывает, что сервер работает.
Я попытался использовать Eclipse Juno и Kepler и получил eclipse SQL State: 08S01 error 0. Нулевые пакеты были успешно отправлены, а сервер не получил ответа. Я заново загрузил Connector/J, чтобы убедиться, что не было ошибки из-за сбоя загрузки. Не улучшилось
Я перешел на Netbeans, чтобы убедиться, что это не просто Eclipse и что-то в моей системе. Не отправлено успешных пакетов и ничего не получено.
Я проверил, чтобы убедиться, что сервер был включен и правильный порт использовался telnet в командной строке, и, как и ожидалось, он запрашивает ввод пароля, как и должен. Я использовал Wire Shark, чтобы посмотреть, как выглядят данные пакета. Похоже, сервер прослушивал правильный порт, а рабочая среда MySQL использовала правильный порт.
Я в растерянности за то, что не так. Я даже обновился до Windows 7, чтобы убедиться, что это не проблема аутентификации драйвера в Vista.
Я использовал этот код в NetBeans:
import java.sql.*;
import java.util.logging.Level;
import java.util.logging.Logger;
public class MySQLTest {
public static void main(String[] args)
{
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
System.out.println("1");
Connection con = DriverManager.getConnection("jdbc:mysql://127.0.0.0:3306/", "root", "wonderwoman");
System.out.println("2");
con.close();
System.out.println("We made it!");
} catch (SQLException ex) {
Logger.getLogger(MySQLTest.class.getName()).log(Level.SEVERE, null, ex);
} catch (ClassNotFoundException ex) {
Logger.getLogger(MySQLTest.class.getName()).log(Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
Logger.getLogger(MySQLTest.class.getName()).log(Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
Logger.getLogger(MySQLTest.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
И в итоге получил это:
22 октября 2013 г. 20:59:20 rad.MySQLTest main SEVERE: null com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: сбой линии связи
Последний пакет, успешно отправленный на сервер, был 0 миллисекунд назад. Драйвер не получил никаких пакетов с сервера.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1121)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:357)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2482)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2519)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2304)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:834)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:416)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:346)
at java.sql.DriverManager.getConnection(DriverManager.java:571)
at java.sql.DriverManager.getConnection(DriverManager.java:215)
at rad.MySQLTest.main(MySQLTest.java:21)
Caused by: java.net.ConnectException: Connection timed out: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:579)
at java.net.Socket.connect(Socket.java:528)
at java.net.Socket.<init>(Socket.java:425)
at java.net.Socket.<init>(Socket.java:241)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:259)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:307)
... 15 more
Что еще я должен попробовать? Похоже, что он попадает на сервер, а затем все просто отскакивает. Я выключил свой брандмауэр, я не использую прокси, вроде как выдергиваю волосы здесь.
4 ответа
Привет, у меня была точно такая же проблема, до сих пор мой MySQL-сервер нормально подключался к netbeans, а потом вдруг перестал работать. Я проверил мой файл my.config в папке bin и по какой-то причине порт изменился с 3306 на 6033, поэтому вы можете либо заново зарегистрировать MySQL под новым номером порта, либо изменить номер порта в файле конфигурации.
Я просто делаю быстрый поиск и вижу этот видеоурок, может быть, вы делаете что-то не так шаг за шагом. Надеюсь, что это полезно для ваших нужд http://magentoexpertforum.com/showthread.php/10268-Connect-Netbean-to-MySQL
Добавить MySql_connetor.bin
файл в библиотеку вашего проекта, затем очистите и соберите, и запустите.
Попробуйте этот код:
try {
Class.forName("java.sql.Driver");
Connection con =
DriverManager.getConnection("jdbc:mysql://localhost/db_name","username","password");
Statement stmt = con.createStatement();
///your furthercode acc. to your project
}
catch(Exception e) {
JOptionPane.showMessageDialog(null,e.getMessage());
}
Я думаю, что вы запускаете mysql на своем локальном компьютере, если это так, добавьте имя вашей базы данных в строку подключения и попробуйте, например, "jdbc:mysql://127.0.0.1:3306/databasename" или попробуйте "jdbc:mysql://localhost:3306/ имя_базы_данный"
Вы используете 127.0.0.0 в качестве IP-адреса, но обычно localhost - это 127.0.0.1, а не 127.0.0.0.