ODBC MySQL для приложений 32-bit на Windows 2008 R2

Материал из Lblss.ru
Перейти к: навигация, поиск

Вот добралось и до меня.... На сервере под Windows 2008 R2, который от природы нативно 64-битный, крутится 32-битная софтинка. И понадобилось этой софтинке коннектиться к MySQL серверу. И умеет она это делать только при помощи ODBC. Ладно, лезем на сайт мускуля, находим MySQL Connector/ODBC. Скачиваем, ставим... и 32 и 64-битную, и вместе и по отдельности... пытаемся создать источник данных через Панель управления -> Администрирование -> Источники данных (ODBC), подрубаемся софтинкой - и каждый раз обламываемся либо на несовместимости, либо сразу, на невозможности создать источник данных.

А ларчик открывался просто. По стандартной ссылке из Панели управления стартует 64-битный %windir%\system32\odbcad32.exe. Вполне естественно, что его софтинка не поймёт. Как оказалось, проблема достаточно хорошо описана на многочисленных страничках MySQL и Microsoft. К сожалению, решение не слишком очевидно. По крайней мере, тут требуется некоторое понимание внутреннего устройства Windows 2008 R2, а именно, его двойного набора утилит - отдельно для 64 и 32-битной среды. Стандартные ссылки из Панели управления ведут на 64-битные версии. Но можно найти их 32-битные "дубликаты". Потому, в данном случае правильным будет использование %windir%\SysWOW64\odbcad32.exe. Запускается стандартно, через Пуск -> Выполнить. Конечно, можно сделать и ярлык, чтоб был под руками. Используем эту утилиту как для создания, так и для правки и удаления 32-битных DSN (64-bit она не поймёт). Разумеется, для успешного создания DSN должна быть установлена 32-битная версия коннектора.

Хорошо. Создали системный DSN (нам такой нужен, а вам - смотрите сами), предположим, с именем Database_MySQL_32. Сохранили там хост, имя пользователя и пароль для подключения к БД.

В заключение, нашей софтинке захотелось использовать файлик *.UDL, который описывает канал подключения. Тут уже не сработал стандартный способ создания файла при помощи мастера (ну, там нужно перерегистрировать библиотеку, чтоб создать его по мышекликам, но это же сложно). Потому помог блокнот. Содержимое файла (назовём его %ProgramFiles(x86)%\Common Files\System\Ole DB\Data Links\Database_MySQL_32.udl) получилось таким:

[oledb]
; Everything after this line is an OLE DB initstring
Provider=MSDASQL.1;Persist Security Info=False;Data Source=Database_MySQL_32;Mode=ReadWrite;Initial Catalog=database

Здесь:

  • Database_MySQL_32 - имя созданного ранее источника данных.
  • database - имя базы данных (возможно, будет работать и без него, так как определено ранее, в DSN).

Собственно говоря, если лень разбираться в структуре одной строчки, этот файлик можно легко создать штатными средствами на сторонней 32-битной машине, а потом скопипастить на целевую.

Персональные инструменты