Java2MySQL> Ошибка связи в связи с заново основанием исключения
Я делаю программу на Java, которая подключается к базе данных MySQL. Поскольку первый класс был классом с единственным статическим методом, возвращающим java.sql.Connection
. После того, как он был отлажен и работала связь, я больше никогда не трогаю его. И несколько дней назад я обнаружил, что моя программа возвращала эту ошибку:
com.mysql.jdbc.CommunicationsException:
Ошибка связи из-за лежащего в основе исключения
НАЧАТЬ НЕПРЕДЕЛЕННОЕ ИСКЛЮЧЕНИЕ
com.mysql.jdbc.CommunicationsException
СООБЩЕНИЕ:
Связь отказ из-за основного исключения:
НАЧАТЬ НЕПРЕДЕЛЕННОЕ ИСКЛЮЧЕНИЕ
java.io.EOFException СООБЩЕНИЕ: Не удается прочитать ответ с сервера. Ожидаемые 4 байта, считанные 0 до того, как соединение было неожиданно потеряно.
StackTrace:
...
- Я установил MySQL Server v. 5.1.62
- Я использую соединитель MySQL/J v. 5.0.8 (загружен с mysql.com)
- Также я помещаю в classpath в NetBeans sqljdbc4.jar
Вещь, которую я не могу понять, это факт, что я не менял имя пользователя и пароль на своем локальном хосте, так как я создал свою базу данных. Единственное, что я изменил: добавить в таблицы больше таблиц и изменить столбцы, но это не вызовет эту ошибку. И что я сделал с моим проектом, я изменил кодировку с UTF-8 на UTF-16, но, я думаю, это вряд ли повлияет на мой метод подключения.
Если я сменил соединитель и вставил в classpath-коннектор v. 5.1.22, он возвращает ошибку:
Доступ запрещен для пользователя "root @localhost" (с использованием пароля: ДА)
даже я объявил все привилегии для пользователя root.
Ответы
Ответ 1
Я рекомендую следующее:
- Во-первых, проверьте, нет ли между двумя серверами сети: a. ping с вашего сервера на ваш сервер базы данных. б. используйте инструмент MTR unix для обеспечить связь между двумя серверами.
- Используете ли вы пул соединений? Если да, попробуйте перезагрузить сервер. Вероятно, несколько соединений в вашем пуле подключений находятся в закрытое состояние.
Сначала разрешим первую проблему. Другая проблема Доступ запрещен для пользователя "root @localhost" (с использованием пароля: ДА) - это независимая проблема, которую мы можем обсудить позже.
Ответ 2
Я забыл сказать, что использую машину Win 7. Спасибо за ответ. Я установил еще больше подключений в моем пуле, и это не сработало (у меня около 10 подключений к базе данных, когда приложение запускается и пул принимает 15).
НО!!
Я не забыл, что я изменил мою кодировку проекта из UTF-8 (с тех пор, как я начинал), в Юникод (потому что я хотел использовать восточно-европейский алфавит в окнах JOptionPane.showMessageDialog();
, так как мой родной алфавит). Только для теста я изменил кодировку обратно на UTF-8, и мое соединение снова работает. Честно... Я этого не понимаю.