Мне записали эту игру Тетриса в Java, который использует DB для очков рекордно высокого уровня. Это работало хорошо, пока я использовал удаленный MySQL DB, но теперь я пытаюсь настроить localhost DB с помощью MySQL XAMPP, и это продолжает идти как "SQLException: отказ Коммуникационного канала" при команде:
con = java.sql.DriverManager.getConnection("jdbc:mysql://localhost/score", user, psw);
Я предполагаю, что это - или неправильный URL или конфигурация DB, но я действительно не знаю, что проверить. Какие-либо идеи?
Править: Мой друг решил мою проблему путем замены "localhost" в URL "127.0.0.1" (который был довольно смущающим, как можно, конечно, предположить :P).
Таким образом, вопрос: Почему XAMPP не в состоянии перевести "localhost" в IP-адрес и как зафиксировать его?
Почему XAMPP не может преобразовать "локальный хост" в IP-адрес и как это исправить?
Это не проблема XAMPP и не проблема программирования. Это скорее проблема с DNS.
Для запуска есть ли у вас файл %SystemRoot%/system32/drivers/etc/hosts
со следующей строкой: first? (таким образом, после всех комментариев, но перед любыми другими объявлениями хостов)
127.0.0.1 localhost
Обновление: согласно комментариям я немного погуглил Googleled и похоже, что драйвер MySQL JDBC вообще не ест адреса IPv6. Другими словами, вам нужно изменить ::1
на 127.0.0.1
. Но я также нашел эту тему, в которой упоминается, что вы можете использовать следующий аргумент JVM для исправления этой проблемы:
java -Djava.net.preferIPv4Stack=true
В MySQL вы должны проверить доступ для вашего пользователя от localhost прямо. Вот пример (взятый из здесь ):
mysql> grant usage on *.* to amarokuser@localhost identified by 'amarokpasswd';
mysql> grant all privileges on amarokdb.* to amarokuser@localhost ;