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

У меня есть эта игра Tetris, написанная на Java, которая использует DB для записи высоких результатов. Он работал нормально, пока я использовал удаленный MySQL DB, но теперь я пытаюсь настроить localhost DB с помощью XAMPP MySQL, и он продолжает работать как "sqlexception: сбой канала связи" по команде:

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

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

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

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

3 ответов


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

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

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

127.0.0.1 localhost

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

java -Djava.net.preferIPv4Stack=true 

Я попытался и получил успешное соединение. Сначала создайте базу данных в phpMyAdmin и - ЭГ. 'базы данных mydb' а потом в коде поставили соединение.url с этим значением

'jdbc:mysql://localhost:3306/mydb'

Если вы сначала не создадите базу данных, она не будет подключаться


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

mysql> grant usage on *.* to amarokuser@localhost identified by 'amarokpasswd';
mysql> grant all privileges on amarokdb.* to amarokuser@localhost ;