работа - sql запросы java




Как подключить локальную БД XAMPP MySQL с помощью JDBC? (2)

У меня есть эта игра Tetris, написанная на Java, которая использует БД для записи высоких результатов. Он работал нормально, пока я использовал удаленный MySQL DB, но теперь я пытаюсь настроить localhost DB с помощью XAMPP MySQL, и он продолжает работать как «SQLException: Communications link failure» по команде:

con = java.sql.DriverManager.getConnection("jdbc:mysql://localhost/score", user, psw);

Я предполагаю, что это неправильная конфигурация URL или БД, но я действительно не знаю, что проверить. Есть идеи?

EDIT: Мой друг исправил мою проблему, заменив «localhost» в URL на «127.0.0.1» (что было довольно неловко, как вы можете себе представить: P).

Итак, вопрос: почему XAMPP не может перевести «localhost» в IP-адрес и как его исправить?


В MySql вы должны явно разрешить доступ для своего пользователя из localhost. Вот пример (взятый отсюда ):

mysql> grant usage on *.* to [email protected] identified by 'amarokpasswd';
mysql> grant all privileges on amarokdb.* to [email protected] ;

Почему XAMPP не может перевести «localhost» в IP-адрес и как его исправить?

Это не проблема XAMPP и проблема программирования. Это больше проблема DNS.

Для начала у вас есть файл %SystemRoot%/system32/drivers/etc/hosts со следующей строкой в первой строке? (таким образом, после всех комментариев, но перед любыми другими объявлениями хоста)

127.0.0.1 localhost

Обновление: в соответствии с комментариями я немного искал Google, и похоже, что драйвер JDBC MySQL вообще не использует IPv6- адреса. Другими словами, вам нужно будет изменить ::1 до 127.0.0.1 . Но я также нашел эту тему, в которой упоминается, что для устранения этой проблемы можно использовать следующий аргумент JVM:

java -Djava.net.preferIPv4Stack=true 




xampp