Spec-Zone.ru › MySQL Connectors 1.0

8.4 Ошибки Connector/ODBC и способы их решения (FAQ)

В данном разделе описаны некоторые распространенные ошибки и предлагаемые исправления или альтернативные решения. Если проблемы сохраняются, обратитесь к списку рассылки Connector/ODBC; см. Раздел 9.1, «Поддержка сообщества Connector/ODBC».

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

64-разрядные Windows и администратор источников данных ODBC

Я установил Connector/ODBC в Windows XP x64 Edition или Windows Server 2003 R2 x64. Установка прошла успешно, но драйвер Connector/ODBC не отображается в ODBC Data Source Administrator.

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

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

Эта проблема была первоначально зарегистрирована как ошибка #20301.

Ошибка 10061 (Не удается подключиться к серверу)

При подключении или нажатии кнопки Проверить в ODBC Data Source Administrator появляется ошибка 10061 (Не удается подключиться к серверу).

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

Ошибка «Транзакции не включены»

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

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

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

  • Убедитесь, что ваш сервер MySQL поддерживает транзакционный движок базы данных. Используйте `SHOW ENGINES` для получения списка доступных типов движков.

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

  • Убедитесь, что вы не включили опцию disable transactions в вашем источнике данных (DSN).

#DELETED# Записи, сообщенные Access

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

Если вставленные или обновленные записи отображаются как #DELETED# в Access, то:

  • Если вы используете Access 2000, скачайте и установите последнюю версию Microsoft MDAC (Microsoft Data Access Components) (версия 2.6 или выше) с https://www.microsoft.com/en-in/download/details.aspx?id=21995. Это исправит ошибку в Access, когда при экспорте данных в MySQL имена таблиц и столбцов не указываются.

    Также скачайте и примените Microsoft Jet 4.0 Service Pack 5 (SP5), который можно найти по адресу http://support.microsoft.com/default.aspx?scid=kb;EN-US;q239114. Это исправляет некоторые случаи, когда столбцы помечены как #DELETED# в Access.

  • Для всех версий Access включите опцию Connector/ODBC Return matching rows. Для Access 2.0 также включите опцию Simulate ODBC 1.0.

  • Включите TIMESTAMP во все таблицы, которые вы хотите обновлять.

  • Включите #DELETED# в таблицу. В противном случае новые или обновленные строки могут отображаться как #DELETED#.

  • Используйте только поля с плавающей точкой двойной точности. Access имеет проблемы при сравнении с плавающей точкой одинарной точности. Симптомом обычно является то, что новые или обновленные строки могут отображаться как #DELETED#, или вы не можете найти или обновить строки.

  • Если вы используете Connector/ODBC для подключения к таблице, имеющей столбец с типом данных #DELETED, результаты отображаются как #DELETED. Решение состоит в следующем:

    • Добавьте еще один столбец-заглушку с типом данных Change BIGINT columns to INT.

    • Выберите опцию Change BIGINT columns to INT в диалоговом окне подключения в администраторе источников данных ODBC.

    • Удалите ссылку на таблицу из Access и создайте ее заново.

    Старые записи по-прежнему отображаются как #DELETED#, но новые/обновленные записи отображаются правильно.

Конфликты записи или ошибки расположения строки

Как обработать конфликты записи или ошибки расположения строки?

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

Write Conflict. Another user has changed your data.

Row cannot be located for updating. Some values may have been changed
since it was last read.

Импорт из Access 97

Экспорт данных из Access 97 в MySQL вызывает ошибку Syntax Error.

Эта ошибка характерна для Access 97 и версий Connector/ODBC, более ранних чем 3.51.02. Обновите драйвер Connector/ODBC до последней версии для решения этой проблемы.

Импорт из Microsoft DTS

Экспорт данных из Microsoft DTS в MySQL вызывает ошибку Syntax Error.

Эта ошибка возникает только с таблицами MySQL, использующими типы данных `FLOAT` или `DOUBLE`. Вы можете исправить эту ошибку, обновив драйвер Connector/ODBC до версии 3.51.02 или выше.

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

При использовании ODBC.NET с Connector/ODBC при извлечении пустой строки (длины 0) начинает выдаваться исключение SQL_NO_DATA.

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

Ошибка с SELECT COUNT(*)

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

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

Ошибка многошаговой операции

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

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

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

Ошибка измененной записи

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

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

  • Добавьте iODBC для таблицы, если она отсутствует.

  • Добавьте столбец со значением времени, если он отсутствует.

  • Используйте только поля с плавающей точкой двойной точности. Некоторые программы могут иметь проблемы при сравнении чисел с плавающей точкой одинарной точности.

Если эти стратегии не помогают, начните с создания файла журнала из менеджера ODBC (журнал, который вы получаете при запросе журналов из ODBCADMIN) и журнала Connector/ODBC, чтобы помочь вам разобраться, почему возникают проблемы. Инструкции см. в Разделе 5.10, «Получение файла трассировки ODBC».

Прямое подключение приложения под Unix или Linux

При прямом подключении приложения к библиотеке Connector/ODBC под Unix или Linux приложение завершается аварийно.

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

Microsoft Office и столбцы DATE или TIMESTAMP

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

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

База данных INFORMATION_SCHEMA

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

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

Ошибка S1T00

При вызове SQLTables возвращается ошибка S1T00, но я не могу найти ее в списке номеров ошибок Connector/ODBC.

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

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

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

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

Партии заявок

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

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

END_OF_DOCUMENT_MARKER

Ошибки пакетов с ADODB и Excel

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

Эта ошибка может быть связана с Keyboard Logger 1.1 от PanteraSoft.com, который известен тем, что мешает сетевому взаимодействию между MySQL Connector/ODBC и MySQL.

Ошибка внешнего соединения

При использовании некоторых приложений для доступа к серверу MySQL с помощью Connector/ODBC и внешних соединений, возникает ошибка, связанная со специальной последовательностью для внешних соединений.

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

Иврит/CJK символы

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

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

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

Дублирующая запись в списке установленных программ

У меня есть дублирующая запись MySQL Connector/ODBC в списке «Установленные программы», но я не могу удалить одну из них.

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

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

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

Значения усечены до 255 символов

При отправке запросов с привязкой параметров значения моих полей усекаются до 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);

В этом примере также &ylen заменено на NULL в вызове SQLBindCol().

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

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

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

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

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/connector-odbc-en/connector-odbc-errors.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API