Как подключить локальную БД XAMPP MySQL с помощью JDBC? - PullRequest
8 голосов
/ 30 января 2010

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

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

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

РЕДАКТИРОВАТЬ: Мой друг исправил мою проблему, заменив «localhost» в URL-адресе на «127.0.0.1» (что было довольно неловко, как вы можете себе представить: P).

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

Ответы [ 3 ]

7 голосов
/ 31 января 2010

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

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

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

127.0.0.1 localhost

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

java -Djava.net.preferIPv4Stack=true 
2 голосов
/ 17 августа 2013

Я попытался и получил успешное соединение. Сначала создайте базу данных в phpmyadmin - например. 'MYDB' а затем в коде вставьте connection.url с этим значением

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

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

1 голос
/ 30 января 2010

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

mysql> grant usage on *.* to amarokuser@localhost identified by 'amarokpasswd';
mysql> grant all privileges on amarokdb.* to amarokuser@localhost ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...