У меня есть приложение, которое работает правильно на большинстве моих машин здесь.

Два из них перестали работать без причины, которую я мог понять (те же обновления, что и у всех остальных, те же настройки сети, то же самое оборудование ...).

Проблема в том, что соединение с источником данных не удается. Сервер является сервером MySQL в другом месте. В начале я думал, что это проблема с DNS (это DNS, а не DSN), потому что ошибка говорит, что он не может найти my.server.com.

Странно то, что из %SYSROOT%/SysWOW64/ODBCAD32.exe указан источник данных коннектора MyODBC и системный DSN с правильным именем (там же, где и другие компьютеры). И это работает, на том же ПК, где приложение не работает. Находит базы данных, позволяет выбрать правильную - все.

Чтобы исключить DNS, я заменил имя на правильный IP-адрес; DNS-запрос больше не происходил, но сразу после этого я получил другую ошибку - ошибка Winsock 10022, неверный сокет. Что говорит мне, что ошибка DNS, вероятно, была связана с тем, что приложение не может подключиться к сокету DNS-сервера.

Так что я догадался, что это как-то брандмауэр. Я пытался отключить его как из графического интерфейса, так и из командной строки (netsh advfirewall все профили отключены), но безрезультатно. Пробовал войти в журнал отладки pfw, там ничего нет (соединение даже не запускается). Трафик на TCP-порт MySQL 3306 отсутствует - он останавливается первым.

На этом компьютере не установлены антивирусы, и на нем установлены все обновления (как и на всех других компьютерах).

Обширный поиск в Google ничего не дал - приложение находится на общем ресурсе UNC (так же, как и на других машинах, на которых оно работает), но даже если я скопирую его на локальный диск, на этих двух оно все равно не будет работать.

В чем может быть дело?

1 ответ1

0

Оказывается, я думал, что проверил это, но мой тест был ошибочным.

Я обнаружил, в начале моего поиска в Интернете, что

If the application using ODBC32 resides on a network drive,
and the user has no write access to the root of that drive,
then ODBC cannot establish a network connection.

(Worth 1500 WTF points)

Поэтому я скопировал приложение и все остальное на рабочий стол. И все равно это не сработало.

То, что я забыл - не обращая внимания на то время - это то, что эти два компьютера имеют свои профили пользователей на удаленном сервере.

Угадай, что. Корень сервера не был доступен для записи.

И это, конечно, 1, помешало ODBC установить сетевое соединение.


(1) "конечно", в мире, где MIDI-файл не открывается из-за ошибки, которая очищается при открытии Microsoft Word. Это случилось со мной почти двадцать лет назад; Я все еще надеюсь, что когда-нибудь смогу забыть это.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .