Приложение VB.Net не может подключиться к локальному MySQL, но я могу подключиться по команде - PullRequest
3 голосов
/ 30 сентября 2011

У нас есть приложение VB.Net, которое отлично работает в наших тестах на разных машинах с Windows XP SP3.Однако есть одна машина, на которой отображается эта ошибка:

Невозможно подключиться к любому из указанных хостов MySQL

Используя команду mysql, мы можем успешно подключиться кбаза данных.Мы уже проверили наличие любых других приложений или брандмауэров, которые могут блокировать соединение, но, похоже, все в порядке.Мы также переустановили систему (без ошибок во время установки), но сообщение об ошибке MySQL не изменилось.

Параметры системы точно такие же, как и на других компьютерах.Мы используем "localhost" в качестве сервера в строке подключения.Файл "hosts" имеет значения по умолчанию (ничего странного в этом нет).

Кто-нибудь имеет подобный опыт и может указать мне правильное направление?

1 Ответ

2 голосов
/ 30 сентября 2011

Мне потребовалось больше часа, чтобы понять это ... Я пытался выяснить, было ли что-то не так в конфигурации сети. Поэтому я выдаю:

netstat -na

И это дало мне некоторые подсказки: сравнивая его с другими компьютерами (которые работают нормально), я обнаружил разницу:

НЕ РАБОТАЕТ:

  Proto  Local Address          Foreign Address        State
  TCP    [::]:3306              [::]:0                 LISTENING       0

РАБОЧАЯ:

  Proto  Local Address          Foreign Address        State
  TCP    127.0.0.1:3306         127.0.0.1:0            LISTENING

Итак, что такое "[::]" и почему это ноль справа?

ОТВЕТ:

Я обнаружил, что «[::]» означает 127.0.0.1 в IPv6 (о нуле, я понятия не имею). Поэтому я проверил настройки TCP / IP на компьютере, который не работал, и был установлен «TCP / IP IPv6» (которого у работающих не было). Я удалил его, перезапустил и вуаля! Это сработало! :)

Возможно, некоторые установщики сетевых карт добавляют IPv6 автоматически? Какой бы ни была причина, это была проблема.

Чтобы предотвратить это в будущем и для упрощения, мы можем выполнить команду:

> ipv6 uninstall

и он автоматически удалит его.

Более элегантным способом решения проблемы будет реализация поддержки IPv6 в системе VB.net (что, я думаю, объясняется здесь ), но это будет сделано позже.

Я предполагаю, что MySQL 5.5 поддерживает IPv6 по умолчанию? Я не нашел способа изменить это ни в настройках, ни в отчете о подобных проблемах.

Надеюсь, это поможет другим людям с такой же проблемой.

Теперь я могу пойти отдохнуть ...

...