День добрый сообществу!
Имеется:
- Debian squeeze,
- Текущий MySQL с репозитория,
- NetBeans 6.9.1,
- mysql-connector-java 5.1.16.
При подключении к БД получаю ошибку:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
Код:
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
} catch (Exception e) {
error = ErrorKind.DRIVER_ERROR;
JOptionPane.showMessageDialog(mainWindow.getComponent(),
"..." + e,
"...",
JOptionPane.ERROR_MESSAGE);
return;
}
Properties properties = new Properties();
properties.setProperty("user", login);
properties.setProperty("password", password);
properties.setProperty("useUnicode", "true");
properties.setProperty("characterEncoding", "UTF-8");
try {
conn = DriverManager.getConnection(
"jdbc:mysql://localhost/db77", properties);
st = conn.createStatement();
createTables();
} catch ...
Важный поинт: пробовал подключиться к этой БД удаленно с этим кодом и этим коннектором - все работает.
Мои мысли + то, что перепробовал:
- Вероятно, проблема не связана с коннектором, БД или моим кодом - поскольку подключаясь с удаленной машины все работает.
- Правила фаервола пусты.
- Пробовал разные варианты bind-address в файле /etc/mysql/my.cnf (127.0.0.1, 0.0.0.0, адрес в локальной сети)
- Смахивает, что лажа из-за настроек java на этой машине. Добавил в java.policy строку Не помогло.
permission java.net.SocketPermission "localhost:3306", "connect, resolve";
- Так же не удаеться подключиться к какой-то другой удаленной БД. Ошибка все та же.
telnet localhost 3306
mysql -uuser -ppassword
Успешно подключаются.
Есть идеи? Спасибо за внимание.