Spec-Zone .ru
спецификации, руководства, описания, API

22.1.7.3. Ошибки соединителя/ODBC и Разрешения (FAQ)

Следующий раздел детализирует некоторые распространенные ошибки и их предложенную фиксацию или альтернативное решение. Если Вы все еще испытываете проблемы, используйте список рассылки Соединителя/ODBC; см. Раздел 22.1.8.1, "общественная поддержка Соединителя/ODBC".

Много проблем могут быть разрешены, обновляя Ваши драйверы Соединителя/ODBC до последнего доступного выпуска. На Windows удостоверьтесь, что у Вас есть последние версии Microsoft Data Access Components установленный (MDAC).

64-разрядный Windows и ODBC Data Source Administrator

Я установил Соединитель/ODBC на Windows XP x64 Выпуск или Windows Server 2003 R2 x64. Установка завершалась успешно, но драйвер Соединителя/ODBC не появляется в ODBC Data Source Administrator.

Это не ошибка, но связывается со способом, которым выпуски Windows x64 работают с драйвером ODBC. На выпусках Windows x64 драйвер Соединителя/ODBC устанавливается в %SystemRoot%\SysWOW64 папка. Однако, значение по умолчанию ODBC Data Source Administrator это доступно через Administrative Tools или Control Panel в Windows x64 Выпуски располагается в %SystemRoot%\system32 папка, и только ищет эту папку драйверы ODBC.

На выпусках Windows x64 используйте административное средство ODBC, расположенное в %SystemRoot%\SysWOW64\odbcad32.exe, это правильно определит местоположение установленных драйверов Соединителя/ODBC и позволит Вам создать Соединитель/ODBC DSN.

Об этой проблеме первоначально сообщили как Ошибка #20301.

Ошибка 10061 (Не может соединиться с сервером),

Соединяясь или используя Кнопку проверки в ODBC Data Source Administrator Я добираюсь, ошибка 10061 (Не может соединиться с сервером),

Эта ошибка может быть повышена многими другими вопросами, включая проблемы сервера, сетевые проблемы, и брандмауэр и проблемы блокирования порта. Для получения дополнительной информации см. Раздел C.5.2.2,"Can't connect to [local] MySQL server".

"Транзакции не включаются" Ошибку

О следующей ошибке сообщают при использовании транзакций: Transactions are not enabled

Эта ошибка указывает, что Вы пытаетесь использовать транзакции с таблицей MySQL, которая не поддерживает транзакции. Транзакции поддерживаются в пределах MySQL при использовании InnoDB механизм базы данных, который является механизмом хранения значения по умолчанию в MySQL 5.5 и выше. В версиях MySQL перед MySQL 5.1 можно также использовать BDB механизм.

Проверьте следующий перед продолжением:

#DELETED# Записи Сообщили Доступом

Доступ сообщает о записях как #DELETED# вставляя или обновляя записи в связанных таблицах.

Если вставленные или обновленные записи показывают как #DELETED# в Доступе, тогда:

Запишите Конфликты или Ошибки Расположения Строки

Как я обрабатываю Конфликты Записи или ошибки Расположения Строки?

Если Вы видите следующие ошибки, выберите Return Matching Rows опция в диалоговом окне конфигурации DSN, или определяют OPTION=2, как параметр соединения:

Write Conflict. Another user has changed your data.Row cannot be located for updating. Some values may have been changedsince it was last read.

Импорт из Доступа 97

Экспорт данных от Доступа 97 к отчетам a MySQL Syntax Error.

Эта ошибка является определенной, чтобы Получить доступ 97 и версии Соединителя/ODBC ранее чем 3.51.02. Обновление к последней версии драйвера Соединителя/ODBC, которая разрешит эту проблему.

Импорт из DTS Microsoft

Экспорт данных от DTS Microsoft до отчетов a MySQL Syntax Error.

Эта ошибка происходит только с таблицами MySQL, используя TEXT или VARCHAR типы данных. Можно фиксировать эту ошибку, обновляя Ваш драйвер Соединителя/ODBC до версии 3.51.02 или выше.

Исключение SQL_NO_DATA из ODBC.NET

Используя ODBC.NET с Соединителем/ODBC, выбирая пустую строку (0 длин), это начинает давать SQL_NO_DATA исключение.

Можно получить патч, который рассматривает эту проблему от http://support.microsoft.com/default.aspx?scid=kb;EN-US;q319243.

Ошибка с ИЗБРАННЫМ ГРАФОМ (*)

Используя SELECT COUNT(*) FROM tbl_name в пределах Visual Basic и ASP возвращает ошибку.

Эта ошибка происходит потому что COUNT(*) выражение возвращает a BIGINT, и ADO не может понять число это большое. Выберите Change BIGINT columns to INT опция (значение опции 16384).

Ошибка Работы многократного шага

Используя AppendChunk() или GetChunk() Методы ADO, Multiple-step operation generated errors. Check each status value ошибка возвращается.

GetChunk() и AppendChunk() методы от ADO не работают как ожидалось, когда позиция курсора определяется как adUseServer. С другой стороны можно преодолеть эту ошибку при использовании adUseClient.

Простой пример может быть найден от http://www.dwam.net/iishelp/ado/docs/adomth02_4.htm

Измененная Ошибка Записи

Возвраты доступа Another user had modified the record that you have modified редактируя записи на Связанной таблице.

В большинстве случаев это может быть решено, делая одну из следующих вещей:

Если эти стратегии не помогают, запустите, делая файл журнала от менеджера по ODBC (журнал, который Вы получаете, запрашивая журналы от ODBCADMIN), и журнал Соединителя/ODBC, чтобы помочь Вам выяснить, почему вещи идут не так, как надо. Для инструкций см. Раздел 22.1.4.8, "Получение Файла трассировки ODBC".

Прямое Приложение, Соединяющееся Под Unix или Linux

Соединяя приложение непосредственно с библиотекой Соединителя/ODBC под Unix или Linux, катастрофическими отказами приложения.

Соединитель/ODBC под Unix или Linux не является совместимым с прямым соединением приложения. Чтобы соединиться с источником ODBC, используйте менеджера по драйверу, такой как iODBC или unixODBC.

Microsoft Office и ДАТА или Столбцы МЕТКИ ВРЕМЕНИ

Приложения в комплекте Microsoft Office не могут обновить таблицы, которые имеют DATE или TIMESTAMP столбцы.

Это - известная проблема с Соединителем/ODBC. Гарантируйте, что у поля есть значение по умолчанию (а не NULL) и что значение по умолчанию является ненулевым (то есть, что-то другое чем 0000-00-00 00:00:00).

База данных INFORMATION_SCHEMA

Соединяя Соединитель/ODBC 5.x к серверу MySQL 4.x, ошибке 1044 Access denied for user 'xxx'@'%' to database 'information_schema' возвращается.

Соединитель/ODBC 5.x разрабатывается, чтобы работать с MySQL 5.0 или позже, используя в своих интересах INFORMATION_SCHEMA база данных, чтобы определить информацию об определении данных. Поддержка MySQL 4.1 планируется заключительный выпуск.

Ошибка S1T00

Вызывая SQLTables, ошибка S1T00 возвращается, но я не могу найти это в списке кодов ошибки для Соединителя/ODBC.

S1T00 ошибка указывает, что общий тайм-аут произошел в пределах системы ODBC и не является ошибкой MySQL. Обычно это указывает, что соединение, которое Вы используете, является устарелым, сервер слишком занят, чтобы принять Ваш запрос или что сервер ушел.

"Таблица не существует" Ошибка в Access 2000

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

Есть известная проблема с определенной версией msjet40.dll это показывает эту проблему. Версия, на которую влияют, 4.0.9025.0. Возвращение к более старой версии позволит Вам создать ссылки. Если Вы недавно обновили свою версию, проверьте Ваш WINDOWS каталог для более старой версии файла и копии это к каталогу драйверов.

Пакетные Операторы

Когда я пытаюсь использовать обработанные в пакетном режиме операторы, выполнение пакетных сбоев операторов.

Пакетная поддержка оператора была добавлена в 3.51.18. Поддержка пакетных операторов не включается по умолчанию. Включите опции FLAG_MULTI_STATEMENTS, оцените 67108864, или выберите Позволение многократного флага операторов в пределах конфигурации GUI.

Пакетные Ошибки с ADODB и Excel

Соединяясь с сервером MySQL, используя ADODB и Excel, иногда приложение не в состоянии связаться с сервером и ошибкой Got an error reading communication packets появляется в журнале ошибок.

Эта ошибка может быть связана с Регистратором Клавиатуры 1.1 от PanteraSoft.com, который, как известно, вмешивается в сетевые коммуникации между MySQL, Connector/ODBC и MySQL.

Ошибка Внешнего объединения

При использовании некоторых приложений, чтобы получить доступ к серверу MySQL, используя Соединитель/ODBC и внешние объединения, об ошибке сообщают относительно Escape-последовательности Внешнего объединения.

Это - известная проблема с MySQL, Connector/ODBC, который правильно не анализирует "Escape-последовательность Внешнего объединения" согласно спецификациям в Спецификациях ODBC Microsoft. В настоящий момент Соединитель/ODBC возвратит значение> 0 когда спрошено SQL_OJ_CAPABILITIES даже при том, что никакой парсинг не имеет место в драйвере, чтобы обработать escape-последовательность внешнего объединения.

Символы Hebrew/CJK

Я могу правильно сохранить расширенные символы в базе данных (Hebrew/CJK) использование Соединителя/ODBC 5.1, но когда я получаю данные, текст не форматируется правильно, и я получаю искаженные символы.

При использовании ASP и символов UTF8, добавьте следующий к своим файлам ASP, чтобы гарантировать, что возвращенные данные правильно кодируются:

Response.CodePage = 65001Response.CharSet = "utf-8"

Двойная Запись в Установленном Списке Программ

У меня есть двойной MySQL запись Connector/ODBC в пределах моего Установленного списка Программ, но я не могу удалить одного из них.

Эта проблема может произойти, когда Вы обновляете существующую установку Соединителя/ODBC вместо удаления и затем установки обновленной версии.

Предупреждение

Чтобы решить проблему, используйте любые рабочие деинсталляторы, чтобы удалить существующие установки; тогда, вероятно, придется отредактировать содержание реестра. Удостоверьтесь, что у Вас есть резервное копирование Вашей информации о реестре прежде, чем делать попытку любого редактирования содержания реестра.

Оценивает Усеченный 255 Символам

Представляя запросы с использованием привязки параметров UPDATE, мои значения полей являются усеченными к 255 символам.

Гарантируйте что FLAG_BIG_PACKETS опция устанавливается для Вашего соединения. Это удаляет 255 символьных ограничений на связанные параметры.

Отключение Данных в выполнении

Действительно ли возможно отключить данные в выполнении, используя флаг?

Если Вы не хотите использовать данные в выполнении, удалите соответствующие вызовы. Например:

SQLLEN ylen = SQL_LEN_DATA_AT_EXEC(10);SQLBindCol(hstmt,2,SQL_C_BINARY, buf, 10, &ylen);

Стал бы:

SQLBindCol(hstmt,2,SQL_C_BINARY, buf, 10, NULL);

Отметьте это в звонке SQLBindCol(), &ylen был заменен НУЛЕМ.

Для дополнительной информации сошлитесь на документацию MSDN для SQLBindCol().

Атрибут NULLABLE для Столбцов AUTO_INCREMENT

Когда Вы вызываете SQLColumns() для столбца таблицы, который является AUTO_INCREMENT, NULLABLE столбец набора результатов всегда SQL_NULLABLE (1).

Это - то, потому что MySQL сообщает DEFAULT значение для такого столбца как NULL. Это означает, если Вы вставляете a NULL значение в столбец, Вы получите следующее целочисленное значение для таблицы auto_increment счетчик.