RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
Visa 
4274 3200 2453 6495 

Глава 5. Настройка Connector/ODBC

Прежде чем вы соединитесь с базой данных MySQL, используя Connector/ODBC, вы формируете имя источника данных ODBC (DSN). DSN связывает различные параметры конфигурации, требуемые, чтобы общаться с базой данных. Вы используете DSN, чтобы общаться с базой данных, вместо того, чтобы определить отдельные параметры в самом приложении. Информация о DSN может быть определенной для пользователя, определенной для системы, или обеспеченная в специальном файле. Имена источника данных ODBC формируются по-разному, в зависимости от вашей платформы и ODBC.

5.1. Обзор Connector/ODBC Data Source Names

Data Source Name связывает параметры конфигурации для связи с определенной базой данных. Обычно DSN состоит из следующих параметров:

  • Name
  • Host Name
  • Database Name
  • Login
  • Password

Кроме того, различные ODBC, включая Connector/ODBC, могут принять дополнительные определенные для драйвера опции и параметры.

Есть три типа DSN:

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

  • User DSN определенный для отдельного пользователя и может использоваться, чтобы хранить информацию соединения базы данных, которую регулярно использует пользователь.

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

Информация DSN хранится в различных местах в зависимости от вашей платформы и окружающей среды.

5.2. Параметры связи Connector/ODBC

Можно определить параметры в следующих таблицах для Connector/ODBC, формируя DSN:

Пользователи Windows могут использовать ODBC Data Source Administrator, чтобы устанавливать эти параметры, посмотрите раздел 5.3 о том, как сделать это и таблицу 5.1 для получения информации об областях и флажках, которым опции соответствуют в графическом интерфейсе пользователя ODBC Data Source Administrator. В Unix и macOS используйте название параметра и значение как пара ключевого слова/значения в конфигурации DSN. Альтернативно, можно установить эти параметры в параметре InConnectionString вызова SQLDriverConnect().

Таблица 5.1. Параметры конфигурации Connector/ODBC DSN

Параметр Опция в GUI Значение по умолчанию Комментарий
user UserODBC Имя пользователя для соединения с MySQL.
uid UserODBC Синоним user. Добавлен в 3.51.16.
server TCP/IP Server localhost Имя хоста сервера MySQL.
database Database- База данных по умолчанию.
option -0 Опции, которые определяют, как Connector/ODBC работает. См. таблицу 5.3 и таблицу 5.4.
port Port3306 Порт TCP/IP, чтобы использовать, если server не localhost.
initstmt Initial Statement- Первоначальный запрос, чтобы выполнить, соединяясь с MySQL. В версии 3.51 параметр называют stmt. Драйвер поддерживает первоначальный запрос, выполняемый только во время начальной связи.
password Password- Пароль для user на server.
pwd Password- Синоним password. Добавлен в 3.51.16.
socket -- Файл сокета Unix или именованный канал Windows, чтобы соединиться, если server = localhost .
sslca SSL Certificate- Путь к файлу со списком доверенных SSL CA. Добавлен в 3.51.16.
sslcapath SSL CA Path- Путь к каталогу, который содержит доверенные сертификаты SSL CA в формате PEM. Добавлен в 3.51.16.
sslcert SSL Certificate- Название файла сертификата SSL, чтобы использовать для установления безопасного соединения. Добавлено в 3.51.16.
sslcipher SSL Cipher- Список допустимых шифров для шифрования SSL. У списка шифра тот же самый формат, как у команды openssl ciphers. Добавлен в 3.51.16.
sslkey SSL Key- Название файла ключей SSL, чтобы использовать для установления безопасного соединения. Добавлено в 3.51.16.
rsakey RSA Public Key- Полный путь к файлу PEM, который содержит открытый ключ RSA для использования плагина идентификации SHA256 MySQL. Добавлено в 5.3.4.
sslverify Verify SSL0 Если 1, сертификат SSL будет проверен, когда используется с подключением MySQL. Если не установлено, то поведение по умолчанию должно проигнорировать проверку сертификата SSL. Опция устарела, начиная с Connector/ODBC 5.3.7. Предпочтительно использовать SSLMODE.

charset Character Set- Набор символов, чтобы использовать для связи. Добавлен 3.51.17.
readtimeout -- Перерыв в секундах для попыток читать с сервера. Каждая попытка использует это значение и при необходимости есть повторения, таким образом, совокупное эффективное значение это три раза значение опции. Можно установить значение так, чтобы потерянная связь могла быть обнаружена ранее, чем значение TCP/IP Close_Wait_Timeout (обычно 10 минут). Этот выбор работает только на связи TCP/IP и только в Windows до MySQL 5.1.12. Соответствует опции MYSQL_OPT_READ_TIMEOUT в библиотеке MySQL Client. Добавлено в 3.51.27.
writetimeout -- Перерыв в секундах для попыток писать в сервер. Каждая попытка использует это значение перерыва и есть net_retry_count повторов при необходимости, таким образом, совокупное эффективное значение перерыва net_retry_count раз значения опции. Это работает только на связи TCP/IP и только на Windows до MySQL 5.1.12. Соответствует опции MYSQL_OPT_WRITE_TIMEOUT в библиотеке MySQL Client. Добавлено в 3.51.27.
interactive Interactive Client0 Если 1, опция CLIENT_INTERACTIVE в mysql-real-connect() включена, добавлено в 5.1.7.
prefetch Prefetch from server by _ rows at a time0

Когда установлено в ненулевое значение N, все запросы в соединении вернут N строк за один раз, а не весь набор результатов. Полезно для запросов для очень больших таблиц, где не практично получить целый набор результатов сразу. Можно просмотреть набор результатов, по N записей за один раз.

Это работает только с однонаправленными курсорами. Это не работает, когда опциональный параметр MULTI_STATEMENTS установлен. Это может использоваться в сочетании с опциональным параметром NO_CACHE. Его поведение в приложениях ADO не определено. Добавлен в 5.1.11.

no_ssps -0

В Connector/ODBC 5.2 и позже по умолчанию применена серверная подготовка запросов. Когда этот выбор установлен в ненулевое значение, подготовленные запросы эмулированы на клиентской стороне, что является тем же самым поведением, как в 5.1 и 3.51. Добавлен в 5.2.0.

can_handle_exp_pwd Can Handle Expired Password0 Указывает, что приложение может работать с паролем с истекшим сроком, который сообщен статусом SQL 08004 (Server rejected the connection ), код ошибки ER_MUST_CHANGE_PASSWORD_LOGIN (1862). Соединение отправлено в песочницу , и ничего не может сделать кроме SET PASSWORD. Чтобы установить связь в этом случае, ваш запрос должен использовать опцию соединения initstmt, чтобы установить новый пароль в начале, или SET PASSWORD немедленно после соединения. Как только пароль с истекшим сроком изменен, ограничения на связь сняты. Посмотрите ALTER USER Syntax. Добавлено в 5.2.4.
ENABLE_CLEARTEXT_PLUGIN Enable Cleartext Authentication0 Установите в 1, чтобы позволить идентификацию открытого текста. Добавлено в 5.1.13 и 5.2.5.
ENABLE_LOCAL_INFILE Enable LOAD DATA operations0 Строка подключения, DSN и опция GUI. Установите ENABLE_LOCAL_INFILE=1, чтобы позволить операции LOAD DATA. Это включает опцию MYSQL_OPT_LOCAL_INFILE в mysql_options(). Строка подключения отвергает значение DSN, если оба установлены. Добавлено в 5.3.12 и 8.0.14.
GET_SERVER_PUBLIC_KEY Get Server Public Key0

Соединяясь с учетками с использованием идентификации caching_sha2_password по незащищенной связи (отключенный TLS), Connector/ODBC просит открытый ключ RSA, требуемый, чтобы выполнить идентификацию от сервера. Выбор проигнорирован, если механизм аутентификации, используемый для связи, отличается от caching_sha2_password. Этот выбор соответствует опции MYSQL_OPT_GET_SERVER_PUBLIC_KEY функции C API mysql_options() . Значение boolean.

Опция добавлена в Connector/ODBC 8.0.11 и 5.3.11. Это требует Connector/ODBC, построенного, пользуясь OpenSSL-библиотекой клиента MySQL. Если библиотека клиента MySQL, использовавшаяся Connector/ODBC, была построена с YaSSL, как имеет место для дистрибутивов GPL Connector/ODBC 5.3, опция не функционирует и проигнорирована.

NO_TLS_1_0 Disable TLS 1.00 Отвергает использование TLS 1.0 для шифрования связи. Все версии TLS позволены по умолчанию, и этот выбор исключает версию 1.0. Добавлен в 5.3.7.
NO_TLS_1_1 Disable TLS 1.10 Отвергает использование TLS 1.1 для шифрования связи. Все версии TLS позволены по умолчанию, и этот выбор исключает версию 1.1. Добавлен в 5.3.7.
NO_TLS_1_2 Disable TLS 1.20 Отвергает использование TLS 1.2 для шифрования связи. Все версии TLS позволены по умолчанию, и этот выбор исключает версию 1.2. Добавлен в 5.3.7.
SSL_ENFORCE Enforce SSL0 Требует использовать SSL для связей с сервером. См. таблицу 5.2. Добавлена в 5.3.6.

Опция устарела, начиная с Connector/ODBC 5.3.7 и удалена в 8.0.13. Предпочтительно использовать SSLMODE.

DISABLE_SSL_DEFAULT Disable default SSL0 Отключает требование по умолчанию использовать SSL для связей с сервером. Когда установлено в 0 [default], Connector/ODBC пытается соединиться с SSL сначала и отступает к незашифрованной связи, если невозможно установить связь SSL. Когда установлено в 1, связь с SSL не предпринята, и незашифрованная связь используется, если SSL_ENFORCE также установлена в 1. См. таблицу 5.2. Добавлено в 5.3.6. Опция устарела с Connector/ODBC 5.3.7 и удалена в 8.0.13. Используйте SSLMODE.

SSLMODE SSL Mode-

Устанавливает способ SSL-связи сервера. Выбор может быть установлен в любое из следующих значений: DISABLED, PREFERRED, REQUIRED, VERIFY_CA или VERIFY_IDENTITY. См. описание для опции --ssl-mode в MySQL 5.7 Reference Manual.

Если SSLMODE явно не установлена, использование sslca или sslcapath подразумевает SSLMODE=VERIFY_CA.

Добавлена в 5.3.7. Эта опция отвергает устаревшие sslverify и SSL_ENFORCE.


Параметры конфигурации SSL могут также быть автоматически загружены из файла my.ini или my.cnf. См. Using Option Files.

Таблица 5.2. Совместное воздействие SSL_ENFORCE и DISABLE_SSL_DEFAULT

DISABLE_SSL_DEFAULT = 0 DISABLE_SSL_DEFAULT = 1
SSL_ENFORCE = 0 (по умолчанию) Связь с SSL предпринята сначала, если невозможна, отступить к незашифрованной связи. Связь с SSL не предпринята, используйте незашифрованную связь.
SSL_ENFORCE = 1 Соединитесь с SSL, ошибка, если связь SSL не может быть установлена. Соединитесь с SSL, ошибка, если связь SSL не может быть установлена. DISABLE_SSL_DEFAULT=1 перекрыта.

Поведение Connector/ODBC может быть также изменено при помощи специальных опциональных параметров, перечисленных в таблице 5.3, определенных в строке подключения или через диалоговое окно графического интерфейса пользователя. У всех параметров связи также есть их собственные числовые постоянные величины, которые могут быть сложены как общее значение для параметра option для определения тех опций. Однако числовое значение option в строке подключения может только позволить, но не отключить параметры, позволенные в DSN, которые могут быть отвергнуты только, определив опциональные параметры, используя их текстовые названия в строке подключения.

В то время как объединенное численное значение для option может быть легко построено добавлением постоянных величин опций, анализ значения, чтобы проверить, позволены ли конкретные варианты, может быть трудным. Мы рекомендуем использовать названия параметра вместо этого в строке подключения, потому что они очевидны.

Таблица 5.3. Опциональные параметры Connector/ODBC

Имя Опция GUI Константа Описание
FOUND_ROWS Return matched rows instead of affected rows2 Клиент не может обращаться, когда MySQL возвращает истинное число затронутых строк. Если этот флаг установлен, MySQL вернет found rows. У вас должен быть MySQL или выше.
BIG_PACKETS Allow big result set8 Не устанавливайте предел пакета для результатов и параметров. Без этого выбора привязка параметров будет усечена 255 знаками.
NO_PROMPT Don't prompt when connecting16 Не задавать вопросов.
DYNAMIC_CURSOR Enable Dynamic Cursors32 Позволить динамические курсоры.
NO_SCHEMA Ignore schema in column specifications64 Проигнорировать использование имени базы данных в db_name.tbl_name.col_name. Этот выбор был удален в Connector/ODBC 8.0.13, применяйте NO_CATALOG.
NO_DEFAULT_CURSOR Disable driver-provided cursor support128 Использование экспериментальных курсоров менеджера ODBC.
NO_LOCALE Don't use setlocale()256 Отключите использование расширенного получения.
PAD_SPACE Pad CHAR to full length with space512 Дополнить CHAR к полной длине столбца.
FULL_COLUMN_NAMES Include table name in SQLDescribeCol()1024 SQLDescribeCol() вернет полностью квалифицированные имена столбцов.
COMPRESSED_PROTO Use compression2048 Используйте сжатый протокол клиент-сервер.
IGNORE_SPACE Ignore space after function names4096 Скажите серверу игнорировать пространство после имени функции и перед ( (надо для PowerBuilder). Это делает все ключевые слова именами функций.
NAMED_PIPE Named Pipe8192 Соединитесь с именованным каналом сервера mysqld под NT.
NO_BIGINT Treat BIGINT columns as INT columns16384 Сменить BIGINT на INT (ряд приложений не понимают BIGINT).
NO_CATALOG Disable catalog support32768 Результаты из функций каталога, например, SQLTables, всегда NULL, драйвер сообщит, что каталоги не поддерживаются.
USE_MYCNF Read options from my.cnf65536 Прочитайте параметры из групп [client] и [odbc] файла my.cnf.
SAFE Enable safe options131072 Добавьте некоторые дополнительные проверки безопасности.
NO_TRANSACTIONS Disable transaction support262144 Отключить транзакции.
LOG_QUERY Log queries to %TEMP%\myodbc.sql524288 Регистрировать запросы в файл c:\myodbc.sql (/tmp/myodbc.sql) (только в режиме отладки).
NO_CACHE Don't cache results of forward-only cursors1048576 Не кэшировать результаты локально в драйвере. Вместо этого читать с сервера (mysql_use_result()). Это работает только на однонаправленные курсоры. Этот выбор очень важен имея дело с большими таблицами, когда вы не хотите, чтобы драйвер кэшировал весь набор результатов.
FORWARD_CURSOR Force use of forward-only cursors2097152 Вызовите использование типа курсора Forward-only . В случаях запросов, устанавливающих по умолчанию статический или динамический тип курсора и ожидающих, чтобы драйвер не использовал кэширование наборов результатов, этот выбор гарантирует поведение однонаправленного курсора.
AUTO_RECONNECT Enable automatic reconnect4194304 Позволяет функциональность автореконнекта. Не используйте этот выбор с транзакциями, так как повторное автосоединение во время незавершенной транзакции может вызвать сбой. Переподключенная связь не унаследует те же самые параметры настройки и окружающую среду как оригинальная связь. Добавлено в 3.51.13.
AUTO_IS_NULL Enable SQL_AUTO_IS_NULL8388608

Когда установлено AUTO_IS_NULL, драйвер не изменяет значение по умолчанию sql_auto_is_null, оставляя его в 1, таким образом, вы получаете значение по умолчанию MySQL, а не стандартное поведение SQL.

Когда не установлено AUTO_IS_NULL, драйвер изменяет значение по умолчанию SQL_AUTO_IS_NULL на 0 после соединения, таким образом, вы получаете стандарт SQL, а не поведение MySQL по умолчанию.

Таким образом исключение флага отключает выбор совместимости и вызывает стандартное поведение SQL.

См. IS NULL. Добавлено в 3.51.13.

ZERO_DATE_TO_MIN Return SQL_NULL_DATA for zero date16777216 Переводит нулевые даты (XXXX-00-00) в минимальные значения даты, поддержанные ODBC, XXXX-01-01. Это решает вопрос, где некоторые запросы не будут работать, потому что возвращенная дата и минимальное значение даты ODBC несовместима. Добавлено в 3.51.17.
MIN_DATE_TO_ZERO Bind minimal date as zero date33554432 Переводит минимальное значение даты ODBC (XXXX-01-01) к нулевому формату даты, поддержанному MySQL (XXXX-00-00). Это решает вопрос, где некоторые запросы не будут работать, потому что возвращенная дата и минимальное значение даты ODBC несовместима. Добавлено в 3.51.17.
NO_DATE_OVERFLOW Ignore data overflow error0 Продолжить выполнение запросов, вместо возврата ошибки, если часть времени отсутствует. Сервер проигнорирует компоненты времени, и результат совпадает, если они были нолями. Добавлено в 5.3.8.
MULTI_STATEMENTS Allow multiple statements67108864 Позволяет поддержку пакетных запросов. Добавлено в 3.51.18.
COLUMN_SIZE_S32 Limit column size to signed 32-bit range134217728 Ограничивает размер столбца значениями signed 32-bit, чтобы предотвратить проблемы с большими размерами столбца в запросах, которые не поддерживают их. Этот выбор автоматически позволен, работая с приложениями ADO. Добавлено в 3.51.22.
NO_BINARY_RESULT Always handle binary function results as character data 268435456 Когда установлено, этот выбор отключает charset 63 для столбцов с пустым org_table. Добавлено в 3.51.26.
DFLT_BIGINT_BIND_STR Bind BIGINT parameters as strings536870912 Передает параметры BIGINT, которые будут связаны, как строки. Microsoft Access обрабатывает BIGINT как последовательность на связанных таблицах. Значение прочитано правильно, но связано как последовательность. Этот выбор используется автоматически, если драйвер используется Microsoft Access. Добавлено в 5.1.3.
NO_INFORMATION_SCHEMA Don't use INFORMATION_SCHEMA for metadata1073741824 Не применять для метаданных INFORMATION_SCHEMA, а использовать устаревшие алгоритмы. Компромисс здесь обычно скорость перед информационным качеством. Использование INFORMATION_SCHEMA часто медленное, но полученная информация более полна. Добавлено в 5.1.7.

Таблица 5.4. Рекомендуемые значения опций Connector/ODBC для различных конфигураций

Конфигурация Установки параметров Значение опций
Microsoft Access, Visual Basic FOUND_ROWS=1;2
Microsoft Access (с улучшенными запросами удаления) FOUND_ROWS=1;DYNAMIC_CURSOR=1;34
Microsoft SQL Server COLUMN_SIZE_S32=1;134217728
Большие таблицы с огромным числом строк COMPRESSED_PROTO=1;2048
Sybase PowerBuilder IGNORE_SPACE=1;FLAG_SAFE=1;135168
Генерация журнала запросов (режим отладки) LOG_QUERY=1;524288
Большие таблицы с результатами без кэширования NO_CACHE=1;FORWARD_CURSOR=1;3145728
Приложения, выполняющие полнотабличные запросы "SELECT * FROM ... ", но читающие только небольшое число (N) строк из результата. PREFETCH=N Неприменимо.

5.3. Настройка Connector/ODBC DSN в Windows

Чтобы добавить или настроить Connector/ODBC 5.x или 8.x DSN в Windows, используйте ODBC Data Source Administrator GUI или myodbc-installer.exe, который идет с Connector/ODBC.

5.3.1. Настройка Connector/ODBC DSN в Windows с ODBC Data Source Administrator GUI

ODBC Data Source Administrator в Windows позволяет вам создать DSN, проверить установку драйвера и формировать функции ODBC, такие как отслеживание (используется для отладки) и объединение связи. Следующее это шаги для создания и формирования DSN с ODBC Data Source Administrator:

  1. Откройте ODBC Data Source Administrator.

    Различные выпуски и версии Windows хранят ODBC Data Source Administrator в разных местах. Для инструкций по открытию ODBC Data Source Administrator, см. документацию на Windows, эти инструкции Microsoft касаются некоторых версий Windows. Необходимо видеть окно, подобное следующему, когда вы открываете ODBC Data Source Administrator:

    Рис. 5.1. ODBC Data Source Administrator

    Shows an example ODBC Data Source Administrator dialog with
the default "User DSN" tab open. This tab includes "Add", "Remove", and
"Configure" options. Additional tabs are "System DSN", "File DSN", "Drivers", "
Tracing", "Connection Pooling", and "About".
  2. Чтобы создать System DSN (который будет доступен всем пользователям), выберите вкладку System DSN. Чтобы создать пользовательский DSN, который будет доступен только нынешнему пользователю, нажмите кнопку Add..., чтобы открыть диалог "Create New Data Source".

  3. Из диалога "Create New Data Source" выберите MySQL ODBC 5.x ANSI or Unicode Driver, нажмите Finish, чтобы открыть его диалог параметров связи.

    Рис. 5.2. Диалог Create New Data Source: выбор MySQL ODBC Driver

    Content is described in the surrounding text.
  4. Теперь необходимо формировать определенные области для DSN, который вы создаете, через диалог Connection Parameters.

    Рис. 5.3. Диалог Data Source Configuration Connection Parameters

    Content is described in the surrounding text.

    В диалоге Data Source Name введите имя источника данных. Это может быть любое действительное имя, которое вы выбираете.

    Чтобы определить, был ли DSN создан, используя 32 или 64-битный драйвер, включите драйвер, используемый в идентификаторе DSN. Это поможет вам определить правильный DSN, чтобы использовать с приложениями вроде Excel, которые совместимы только с 32-битным драйвером. Например, вы могли бы добавить Using32bitCODBC к идентификатору DSN для 32-битного интерфейса и Using64bitCODBC для тех, которые используют 64-битный драйвер.

  5. В диалоге Description введите некоторый текст, чтобы помочь определить связь.

  6. В поле Server введите имя сервера MySQL. По умолчанию это localhost.

  7. В поле User введите имя пользователя для этой связи.

  8. В поле Password введите соответствующий пароль для этой связи.

  9. Окно Database должно быть автоматически заполнено списком баз данных, к которым у пользователя есть разрешения получить доступ.

  10. Чтобы общаться по другому порту TCP/IP, чем порт по умолчанию (3306), смените значение Port.

  11. Нажмите OK, чтобы сохранить настройки DSN.

Чтобы проверить связь, используя параметры, щелкните кнопку Test. Если связь может быть установлена успешно, вы будете уведомлены диалогом Connection Successful, иначе диалогом Connection Failed.

Можно формировать много возможностей для определенного DSN, нажимая кнопку Details.

Рис. 5.4. Диалог Connector/ODBC Connect Options

Content is described in the surrounding text.

В диалоге Details можно настроить:

  • Connections, Metadata и Cursors/Results позволяют вам выбрать дополнительные флаги для связи DSN. Для получения дополнительной информации об этих флагах посмотрите раздел 5.2.

    Для версии Unicode Connector/ODBC из-за его родной поддержки Unicode, вы не должны определять начальный набор символов, который будет использоваться с вашей связью. Однако для версии ANSI, если вы хотите использовать многобайтовый набор символов, такой как UTF-16 или UTF-32 первоначально, определите его в диалоге Character Set, однако, это не необходимо для использования UTF-8 или UTF-8-MB4 первоначально, потому что они не содержат байт \0 в любых знаках, и поэтому драйвер ANSI не усекает последовательности случайно, находя байты \0.

  • Debug позволяет вам включить отладку ODBC, чтобы сделать запись запросов, которые вы выполняете через DSN, в файл myodbc.sql. См. раздел 5.8.

  • SSL формирует дополнительные опции, требуемые для использования Secure Sockets Layer (SSL), общаясь с сервером MySQL.

    Рис. 5.5. Диалог Connector/ODBC Connect Options: опции SSL

    Content is described in the surrounding text.

    Необходимо также позволить и настроить SSL на сервере MySQL с подходящими сертификатами, чтобы сообщить использование его, используя SSL.

5.3.2. Настройка Connector/ODBC DSN в Windows, используя командную строку

Используйте myodbc-installer.exe для настройки Connector/ODBC из командной строки.

Выполните myodbc-installer.exe без аргументов, чтобы просмотреть список доступных параметров.

5.3.3. Поиск неисправностей и проблемы связи ODBC

Этот раздел отвечает на вопросы, связанные со связью Connector/ODBC.

  • Формируя Connector/ODBC DSN, происходит ошибка Could Not Load Translator or Setup Library

    См. MS KnowledgeBase Article(Q260558). Кроме того, удостоверьтесь, что у вас есть последний действительный ctl3d32.dll в вашем системном каталоге.

  • Имена файлов Connector/ODBC .dll (Windows) и .so (Linux) зависят от нескольких факторов:

    Версия Connector/ODBC: цифра в имени файла указывает на главный номер версии Connector/ODBC. Например, файл под названием myodbc8w.dll для Connector/ODBC 8.x, тогда как myodbc5w.dll для Connector/ODBC 5.x.

    Driver Type: Драйвер Unicode добавляет символ "w" к именам файлов, чтобы указать, что широкие символы поддерживаются. Например, myodbc8w.dll для драйвера Unicode. ANSI-драйвер добавляет "a" вместо "w", подобно myodbc8a.dll.

    GUI Setup module: файлы модуля установки GUI добавляют "S" к именам файлов.

  • Предоставление возможности режима отладки: как правило, режим отладки не позволен, поскольку он тормозит работу. Драйвер должен быть собран с режимом отладки.

5.4. Настройка Connector/ODBC DSN в macOS

Чтобы формировать DSN на macOS, можно использовать утилиту командной строки (myodbc-installer), отредактировать файл odbc.ini в каталоге Library/ODBC домашнего каталога пользователя или использовать ODBC Administrator GUI.

ODBC Administrator есть в OS X v10.5 и выше, пользователи более поздних версий OS X и macOS должны загрузить и установить его вручную.

Чтобы создать DSN с использованием myodbc-installer, необходимо только определить тип DSN и строку подключения DSN. Например:

// With Connector/ODBC 8.0:
shell> myodbc-installer -a -s -t"DSN=mydb;DRIVER=MySQL ODBC 8.0 Driver;SERVER=mysql;USER=username;PASSWORD=pass"

// With Connector/ODBC 5.3:
shell> myodbc-installer -a -s -t"DSN=mydb;DRIVER=MySQL ODBC 5.3 Driver;SERVER=mysql;USER=username;PASSWORD=pass"

Чтобы использовать ODBC Administrator:

  • Для правильной работы ODBC Administrator гарантируйте, что файл /Library/ODBC/odbc.ini раньше настраивал возможность соединения ODBC, и DSN перезаписываемы группой admin. Если этот файл не перезаписываем этой группой, то ODBC Administrator может потерпеть неудачу или, может казаться, работает, но не производит правильные записи.

  • Там известны проблемы с macOS ODBC Administrator и Connector/ODBC, которые могут препятствовать тому, чтобы вы создали DSN, используя этот метод. В этом случае используйте командную строку или отредактируйте файл odbc.ini напрямую. Существующий DSN или те, которые вы создали с использованием инструмента myodbc-installer, могут все еще быть проверены и отредактированы с использованием ODBC Administrator.

  1. Откройте ODBC Administrator из папки Utilities в Applications.

    Рис. 5.6. Диалог ODBC Administrator

    Shows an empty ODBC Administrator dialog with the "System DSN" tab open.
This tab includes "Add", "Remove", and "Configure" options. Additional tabs
are "User DSN", "Drivers", "Tracing", "Connection Pooling", and "About".
  2. Из диалога ODBC Administrator выберите User DSN или System DSN и нажмите Add.

  3. Выберите драйвер Connector/ODBC и нажмите OK.

  4. Откроется диалог Data Source Name (DSN). Введите Data Source Name и возможно Description для DSN.

    Рис. 5.7. Диалог ODBC Administrator Data Source Name

    Content is described in the surrounding text.


  5. Нажмите Add, чтобы добавить новую пару ключевого слова/значения к группе. Формируйте по крайней мере четыре пары, чтобы определить параметры the server, username, password и database, см. раздел 5.2.

  6. Нажмите OK, чтобы добавить DSN к списку формируемых имен источников данных.

Законченная конфигурация DSN может быть похожей на это:

Рис. 5.8. Образец ODBC Administrator DSN

Shows an example Data Source Name dialog with
"Data Source Name" set to WorldSample and "Description" set to "Connection to
sample World database." Also shown are the following key=value pairs:
server=mysql, user=sakila, password=Sample, and database=test_world.

Можно формировать другие варианты ODBC в DSN, добавляя дальнейшие пары ключевого слова/значения и устанавливая соответствующие значения. Посмотрите раздел 5.2.

5.5. Формирование Connector/ODBC DSN в Unix

В Unix вы формируете записи DSN непосредственно в файле odbc.ini. Вот типичный файл odbc.ini, который формирует myodbc8w (Unicode) myodbc8a (ANSI) как имена DSN для Connector/ODBC 8.0:

;
;odbc.ini configuration for Connector/ODBC 8.0 driver
;

[ODBC Data Sources]
myodbc8w = MyODBC 8.0 UNICODE Driver DSN
myodbc8a = MyODBC 8.0 ANSI Driver DSN

[myodbc8w]
Driver = /usr/local/lib/libmyodbc8w.so
Description= Connector/ODBC 8.0 UNICODE Driver DSN
SERVER = localhost
PORT =
USER = root
Password =
Database = test
OPTION = 3
SOCKET =

[myodbc8a]
Driver = /usr/local/lib/libmyodbc8a.so
Description= Connector/ODBC 8.0 ANSI Driver DSN
SERVER = localhost
PORT =
USER = root
Password =
Database = test
OPTION = 3
SOCKET =

См. раздел 5.2 для списка параметров связи, которые могут применяться.

Если Вы используете unixODBC, можно использовать следующие инструменты, чтобы настроить DSN:

В некоторых случаях, используя unixODBC, вы могли бы получить эту ошибку:

Data source name not found and no default driver specified

Если это происходит, удостоверьтесь, что переменные окружения ODBCINI и ODBCSYSINI указывают на файл odbc.ini. Например, если ваш файл odbc.ini лежит в /usr/local/etc, установите переменные окружения:

export ODBCINI=/usr/local/etc/odbc.ini
export ODBCSYSINI=/usr/local/etc

5.6. Соединение без предопределенного DSN

Можно соединиться с использованием сервера MySQL SQLDriverConnect, определяя поле имени DRIVER. Вот строки подключения для Connector/ODBC, использующего соединение без DSN:

Для Connector/ODBC 8.0:

ConnectionString = "DRIVER={MySQL ODBC 8.0 Driver};\
   SERVER=localhost;\
   DATABASE=test;\
   USER=venu;\
   PASSWORD=venu;\
   OPTION=3;"

Замените MySQL ODBC 8.0 Driver на имя, под которым вы зарегистрировали свой драйвер Connector/ODBC в менеджере драйверов ODBC, если это отличается. Если ваш язык программирования преобразовывает наклонную черту влево, сопровождаемую пробелом, в пробел, предпочтительно определить строку подключения как единственную длинную строку или использовать связь многократных последовательностей, которая не добавляет промежуточные пробелы. Например:

ConnectionString = "DRIVER={MySQL ODBC 8.0 Driver};"
   "SERVER=localhost;"
   "DATABASE=test;"
   "USER=venu;"
   "PASSWORD=venu;"
   "OPTION=3;"

В macOS вы, возможно, должны были бы определить полный путь к библиотеке драйвера Connector/ODBC.

См. раздел 5.2 для списка параметров связи, которые могут использоваться.

5.7. Объединение связи ODBC

Объединение связи позволяет драйверу снова использовать существующие связи с данной базой данных из пула связей, вместо того, чтобы открыть новую связь каждый раз, когда к базе данных получают доступ. Позволяя объединение связи, можно улучшить общую производительность вашего запроса, понизив время, потраченное, чтобы открыть связь с базой данных.

Для получения дополнительной информации об объединении связи см. http://support.microsoft.com/default.aspx?scid=kb;EN-US;q169470 .

5.8. Получение файла трассировки ODBC

Если вы сталкиваетесь с трудностями или проблемами с Connector/ODBC, запустите файл журнала из ODBC Manager и Connector/ODBC. Это называют трассировкой и управляют через менеджер ODBC. Процедура этого отличается для Windows, macOS и Unix.

5.8.1. Включение трассировки ODBC в Windows

Чтобы включить трассировку в Windows:

  1. Вкладка Tracing диалогового окна ODBC Data Source Administrator позволяет вам формировать способ, которым прослеживаются вызовы функции ODBC.

    Рис. 5.9. Диалог ODBC Data Source Administrator Tracing

    Tracing example includes the "Log File Path" and "Custom Trace DLL"
values set, along with buttons to "Start Tracing Now" and
"Start Visual Studio Analyzer".
  2. Когда вы активируете отслеживание с вкладки Tracing, Driver Manager пишет все вызовы функций ODBC для всех впоследствии запущенных приложений.

  3. Вызовы функций ODBC из приложений, запущенных перед включением отслеживания, не зарегистрированы. Вызовы функции ODBC зарегистрированы в файле журнала, который вы определяете.

  4. Отслеживание прекращается только после того, как вы щелкнете Stop Tracing Now. Помните, что, в то время как отслеживание идет, файл журнала продолжает увеличиваться в размере и что отслеживание влияет на исполнение всех ваших запросов к ODBC.

5.8.2. Включение трассировки ODBC в macOS

Чтобы позволить трассировку в macOS, используйте вкладку Tracing в ODBC Administrator.

  1. Откройте ODBC Administrator.

  2. Выберите вкладку Tracing .

    Рис. 5.10. Диалог ODBC Administrator Tracing

    Shows a default Tracing dialog with options including file locations for
the "Log File" and "Custom Trace Library", and a checkbox to enable or
disable tracing.
  3. Выберите пункт Enable Tracing.

  4. Укажите место, чтобы сохранить журнал. Чтобы добавить информацию к существующему файлу журнала, нажмите кнопку Choose....

5.8.3. Включение трассировки ODBC в Unix

Чтобы включить трассировку в OS X 10.2 (и ранее) или в Unix, добавьте опцию trace в конфигурацию ODBC:

  1. В Unix явно установите опцию Trace в файле ODBC.INI.

    Установите отслеживание ON или OFF, используя параметры TraceFile и Trace в odbc.ini:

    TraceFile= /tmp/odbc.trace
    Trace= 1
    

    TraceFile определяет имя и полный путь файла трассировки, Trace устанавливается в ON or OFF. Можно также использовать 1 или YES для ON и 0 или NO для OFF. При использовании ODBCConfig из unixODBC следуйте инструкциям для отслеживания вызовов unixODBC в HOWTO-ODBCConfig.

5.8.4. Включение журнала Connector/ODBC

Чтобы произвести регистрацию Connector/ODBC, сделайте следующее:

  1. В Windows включите опцию Trace Connector/ODBC на экране Connector/ODBC connect/configure. Журнал написан в файл C:\myodbc.log. Если опция не запоминается, когда вы возвращаетесь к вышеупомянутому экрану, это означает, что вы не используете драйвер myodbcd.dll, см. раздел 5.3.3.

    В macOS, Unix или при использовании соединения без DSN, укажите OPTION=4 в строке подключения или соответствующую пару ключевого слова/значения в DSN.

  2. Запустите свое приложение и попытайтесь заставить его терпеть неудачу. Проверьте файл трассировки Connector/ODBC, чтобы узнать то, что могло быть неправильным.

Если вы нуждаетесь в помощи, определяя что не так, посмотрите раздел 9.1.

Поиск

 

Найди своих коллег!

Вы можете направить письмо администратору этой странички, Алексею Паутову. mailto:alexey.v.pautov@mail.ru