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

Глава 8. Connector/ODBC: советы и подсказки

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

8.1. Общая функциональность Connector/ODBC

Этот раздел предоставляет общие вопросы помощи в области функциональности в MySQL и как использовать их с Connector/ODBC.

8.1.1. Получение значений Auto-Increment

Получение значения столбца, который использует AUTO_INCREMENT после INSERT может быть достигнуто различными способами. Получить значение немедленно после INSERT можно через SELECT с функцией LAST_INSERT_ID().

Например, при использовании Connector/ODBC вы выполнили бы два отдельных запроса: INSERT и SELECT, чтобы получить значение auto-increment.

INSERT INTO tbl (auto,text) VALUES(NULL,'text');
SELECT LAST_INSERT_ID();

Если вы не требуете значение в рамках запроса, но действительно требуете значение как часть другого INSERT, весь процесс может быть обработан, выполнив следующие запросы:

INSERT INTO tbl (auto,text) VALUES(NULL,'text');
INSERT INTO tbl2 (id,text) VALUES(LAST_INSERT_ID(),'text');

Определенные приложения ODBC (включая Delphi и Access) могут испытать затруднения при получении значения auto-increment, используя предыдущие примеры. В этом случае попробуйте следующее как альтернативу:

SELECT * FROM tbl WHERE auto IS NULL;

Этот альтернативный метод требует, чтобы переменная sql_auto_is_null не была установлена в 0. См. Server System Variables.

См. также How to Get the Unique ID for the Last Inserted Row.

8.1.2. Поддержка динамического курсора

Поддержка динамического курсора обеспечивается в Connector/ODBC 3.51, но динамические курсоры не позволены по умолчанию. Можно позволить эту функцию в Windows, выбрав опцию Enable Dynamic Cursor в ODBC Data Source Administrator.

На других платформах можно позволить динамический курсор, добавив 32 в значение OPTION, создавая DSN.

8.1.3. Производительность Connector/ODBC

Драйвер Connector/ODBC был оптимизирован, чтобы обеспечить очень быструю работу. Если вы испытываете проблемы с исполнением Connector/ODBC или замечаете большой объем активности диска для простых запросов, есть много аспектов, чтобы проверить:

  • Гарантируйте, что выключен ODBC Tracing. С отслеживанием большая информация зарегистрирована в файле менеджером ODBC. Можно проверить и отключить трассировку в Windows, используя панель Tracing в ODBC Data Source Administrator. В macOS проверьте панель Tracing в ODBC Administrator. См. раздел 5.8.

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

  • Отключите трассировку драйвера Connector/ODBC и журналы запросов. Эти варианты позволены для каждого DSN, поэтому удостоверьтесь, что исследовали только DSN, который вы используете в своем запросе. В Windows можно отключить трассировку Connector/ODBC и журналы запросов, изменив конфигурацию DSN. В macOS и Unix гарантируйте, что трассировка драйвера (значение опции 4) и регистрация запросов (значение опции 524288) выключены.

8.1.4. Установка тайм-аута запроса ODBC в Windows

Для получения дополнительной информации о том, как установить тайм-аут запроса в Microsoft Windows, выполняя запросы через ODBC, прочитайте документ базы знаний Microsoft http://support.microsoft.com/default.aspx?scid=kb%3Ben-us%3B153756.

8.2. Специализированные подсказки Connector/ODBC

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

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

8.2.1. Использование Connector/ODBC с Microsoft Applications

Большинство приложений Microsoft было проверено с Connector/ODBC, включая Microsoft Office, Microsoft Access различные языки программирования, поддержанные в ASP и Microsoft Visual Studio.

8.2.1.1. Microsoft Access

Улучшить интеграцию между Microsoft Access и MySQL через Connector/ODBC:

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

  • Включайте столбцы TIMESTAMP во все таблицы, которые вы хотите обновить. Для максимальной мобильности не используйте спецификацию длины в декларации столбца (которая не поддерживается в MySQL в версиях ранее, чем 4.1).

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

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

  • При использовании Connector/ODBC, чтобы связаться с таблицей, у которой есть столбец BIGINT, результаты показаны как #DELETED#. Починить можно так:

    • Имейте еще один фиктивный столбец TIMESTAMP как тип данных.

    • Выберите опцию Change BIGINT columns to INT в диалоге связи в ODBC DSN Administrator.

    • Удалите связь таблицы из Access и пересоздайте ее.

    Старые записи могут все еще показать как #DELETED#, но недавно добавленные/обновленные показаны правильно.

  • Если вы все еще получаете ошибку Another user has changed your data после добавления столбца TIMESTAMP, следующая уловка может помочь вам:

    Не используйте представление таблицы данных table. Вместо этого создайте форму с областями, которые вы хотите, и используйте представление таблицы данных form. Установите свойство DefaultValue для столбца TIMESTAMP в NOW(). Рассмотрите сокрытие столбца TIMESTAMP из представления, так ваши пользователи не перепутаны.

  • В некоторых случаях Access может произвести SQL-операторы, которые не может понять MySQL. Можно исправить это, выбрав "Query|SQLSpecific|Pass-Through" из меню Access.

  • В Windows NT Access покажет столбцы BLOB как OLE OBJECTS. Если вы хотите иметь вместо этого столбцы MEMO, смените BLOB на TEXT через ALTER TABLE.

  • Access не всегда может обращаться со столбцами MySQL DATE. Если вы имеете проблему с ними, измените столбцы на DATETIME.

  • Если у вас есть в Access столбец BYTE, Access пытается экспортировать это как TINYINT вместо TINYINT UNSIGNED. Это дает вам проблемы, если у вас есть значения больше 127.

  • Если у вас есть очень большие (длинные) таблицы в Access, могло бы потребоваться очень долгое время, чтобы открыть их. Или вы могли бы испытать нехватку виртуальной памяти и в конечном счете получить ошибку ODBC Query Failed. Чтобы иметь дело с этим, выберите следующие опции:

    • Return Matching Rows (2)

    • Allow BIG Results (8).

    Они составляют в целом значение 10 (OPTION=10).

Некоторые внешние статьи и подсказки, которые могут быть полезными, используя Access, ODBC и Connector/ODBC:

8.2.1.2. Microsoft Excel и типы столбца

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

Чтобы решить эту проблему, используйте функцию CONCAT() в запросах. Применение CONCAT() заставляет Excel рассматривать значение как последовательность, ее Excel разберет и обычно правильно определит вложенную информацию.

Однако даже с этим выбором, некоторые данные могут быть неправильно отформатированы, даже при том, что исходные данные остаются неизменными. Используйте опцию Format Cells в Excel, чтобы изменить формат показанной информации.

8.2.1.3. Microsoft Visual Basic

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

Visual Basic с ADO не может обращаться с большими целыми числами. Это означает что некоторые запросы вроде SHOW PROCESSLIST не работайте правильно. Решение должно использовать OPTION=16384 в строке соединения ODBC или выбор опции Change BIGINT columns to INT на экране подключения Connector/ODBC. Можно также выбрать опцию Return matching rows.

8.2.1.4. Microsoft Visual InterDev

Если у вас есть BIGINT в вашем результате можно получить ошибку [Microsoft] [ODBC Driver Manager] Driver does not support this parameter. Попытайтесь выбрать опцию Change BIGINT columns to INT на экране подключения Connector/ODBC.

8.2.1.5. Visual Objects

Выберите опцию Don't optimize column widths.

8.2.1.6. Microsoft ADO

Когда вы кодируете с ADO API и Connector/ODBC, необходимо обратить внимание на некоторые свойства по умолчанию, которые не поддерживаются сервером MySQL. Например, использование CursorLocation Property как adUseServer возвращает результат -1 для RecordCount Property. Чтобы иметь правильное значение, необходимо установить это свойство в adUseClient, как показано в коде VB здесь:

Dim myconn As New ADODB.Connection
Dim myrs As New Recordset
Dim mySQL As String
Dim myrows As Long

myconn.Open "DSN=MyODBCsample"
mySQL = "SELECT * from user"
myrs.Source = mySQL
Set myrs.ActiveConnection = myconn
myrs.CursorLocation = adUseClient
myrs.Open
myrows = myrs.RecordCount
myrs.Close
myconn.Close

Можно использовать SELECT COUNT(*) для подобного запроса, чтобы получить правильное количество строк.

Чтобы узнать число строк, затронутое определенным SQL-оператором в ADO, используйте свойство RecordsAffected в методе ADO execute. См. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdmthcnnexecute.asp .

См. ActiveX Data Objects(ADO) Frequently Asked Questions.

8.2.1.7. Использование Connector/ODBC с Active Server Pages (ASP)

Выберите опцию Return matching rows в DSN.

Для получения дополнительной информации о том, как получить доступ к MySQL через ASP, используя Connector/ODBC, обратитесь к следующим статьям:

Frequently Asked Questions для ASP можно найти на http://support.microsoft.com/default.aspx?scid=/Support/ActiveServer/faq/data/adofaq.asp.

8.2.1.8. Connector/ODBC с Visual Basic (ADO, DAO и RDO) и ASP

Некоторые статьи, которые могут помочь с Visual Basic и ASP:

8.2.2. Connector/ODBC с приложениями Borland

Со всеми приложениями Borland, где Borland Database Engine (BDE) используется, выполните эти шаги, чтобы улучшить совместимость:

  • Обновление до BDE 3.2 или более нового.

  • Включите опцию Don't optimize column widths в DSN.

  • Включите опцию Return matching rows в DSN.

8.2.2.1. Connector/ODBC с Borland Builder 4

Когда вы начинаете запрос, можно использовать свойство Active или метод Open.

Свойство Active ставится автоматически при запуске запроса SELECT * FROM .... Это может затронуть производительность для больших таблиц.

8.2.2.2. Connector/ODBC и Delphi

Кроме того, вот некоторый потенциально полезный код Delphi, который настраивает записи ODBC и BDE для Connector/ODBC. Запись BDE требует BDE Alias Editor, который свободно доступен на Delphi Super Page (благодаря Bryan Brunton <bryan@flesherfab.com> ):

fReg:= TRegistry.Create;
fReg.OpenKey('\Software\ODBC\ODBC.INI\DocumentsFab', True);
fReg.WriteString('Database', 'Documents');
fReg.WriteString('Description', ' ');
fReg.WriteString('Driver', 'C:\WINNT\System32\myodbc.dll');
fReg.WriteString('Flag', '1');
fReg.WriteString('Password', '');
fReg.WriteString('Port', ' ');
fReg.WriteString('Server', 'xmark');
fReg.WriteString('User', 'winuser');
fReg.OpenKey('\Software\ODBC\ODBC.INI\ODBC Data Sources', True);
fReg.WriteString('DocumentsFab', 'MySQL');
fReg.CloseKey;
fReg.Free;

Memo1.Lines.Add('DATABASE NAME=');
Memo1.Lines.Add('USER NAME=');
Memo1.Lines.Add('ODBC DSN=DocumentsFab');
Memo1.Lines.Add('OPEN MODE=READ/WRITE');
Memo1.Lines.Add('BATCH COUNT=200');
Memo1.Lines.Add('LANGDRIVER=');
Memo1.Lines.Add('MAX ROWS=-1');
Memo1.Lines.Add('SCHEMA CACHE DIR=');
Memo1.Lines.Add('SCHEMA CACHE SIZE=8');
Memo1.Lines.Add('SCHEMA CACHE TIME=-1');
Memo1.Lines.Add('SQLPASSTHRU MODE=SHARED AUTOCOMMIT');
Memo1.Lines.Add('SQLQRYMODE=');
Memo1.Lines.Add('ENABLE SCHEMA CACHE=FALSE');
Memo1.Lines.Add('ENABLE BCD=FALSE');
Memo1.Lines.Add('ROWSET SIZE=20');
Memo1.Lines.Add('BLOBS TO CACHE=64');
Memo1.Lines.Add('BLOB SIZE=32');
AliasEditor.Add('DocumentsFab','MySQL',Memo1.Lines);

8.2.2.3. Connector/ODBC и C++ Builder

Проверено с BDE 3.0. Единственная известная проблема состоит в том, что, когда схема таблицы изменяется, поля запроса не обновляются. BDE, однако, кажется, не признает первичные ключи, только индекс, названный PRIMARY, хотя это не было проблемой.

8.2.3. Connector/ODBC с ColdFusion

Следующая информация взята из документации по ColdFusion:

Используйте следующую информацию, чтобы формировать ColdFusion Server for Linux для применения драйвера unixODBC с Connector/ODBC для источника данных MySQL. Можно загрузить Connector/ODBC с https://dev.mysql.com/downloads/Connector/ODBC/.

ColdFusion version 4.5.1 позволяет вам использовать ColdFusion Administrator, чтобы добавить источник данных MySQL. Однако драйвер не включен в ColdFusion 4.5.1. Прежде чем драйвер MySQL появится в выпадающем списке источников данных ODBC, соберите и скопируйте драйвер Connector/ODBC в /opt/coldfusion/lib/libmyodbc.so.

Каталог Contrib содержит программу mydsn-xxx .zip, которая позволяет вам построить и удалить файл реестра DSN для драйвера Connector/ODBC в ColdFusion.

Для получения дополнительной информации о ColdFusion и Connector/ODBC посмотрите следующие сайты:

8.2.4. Connector/ODBC с OpenOffice.org

Open Office ( http://www.openoffice.org) How-to: MySQL + OpenOffice. How-to: OpenOffice + MyODBC + unixODBC.

8.2.5. Connector/ODBC с Sambar Server

Sambar Server ( http://www.sambarserver.info) How-to: MyODBC + SambarServer + MySQL.

8.2.6. Connector/ODBC и Pervasive Software DataJunction

Необходимо изменить его, чтобы произвести вывод VARCHAR вместо ENUM, поскольку это экспортирует последним способом, который вызывает проблемы MySQL.

8.2.7. Connector/ODBC и SunSystems Vision

Выберите опцию Return matching rows.

8.3. Connector/ODBC и приложения, использующие OpenSSL

Если Connector/ODBC соединяется надежно с сервером MySQL, и приложение, используя связь сделало вызовы к библиотеке OpenSSL, оно могло бы потерпеть неудачу, поскольку тогда две копии библиотеки OpenSSL будут использоваться.

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

Чтобы предотвратить проблему, в вашем запросе, не позволяют инициализацию OpenSSL в одном потоке и открытие связи Connector/ODBC в другом (который также инициализирует openSSL) одновременно. Например, используйте mutex, чтобы гарантировать синхронизацию между вызовами SQLDriverConnect() или SQLConnect() и инициализацией openSSL. В дополнение к этому, сделайте следующее, если возможно:

  • Используйте сборку Connector/ODBC, которая компонуется (статически или динамически) с версией библиотеки libmysqlclient, которая в свою очередь динамически связана с той же самой библиотекой OpenSSL, которую вызывает приложение.

  • Собирая Connector/ODBC, который компонуется (статически или динамически) с версией библиотеки libmysqlclient, которая в свою очередь статически скомпонована с библиотекой OpenSSL, НЕ экспортируйте символы OpenSSL в вашей сборке. Это предотвращает неправильное разрешение символов приложений, однако, это не предотвращает другие проблемы с управлением двумя копиями кода OpenSSL в рамках отдельного приложения.

8.4. Connector/ODBC ошибки и решения (FAQ)

Следующий раздел детализирует некоторые распространенные ошибки и их исправление или альтернативное решение. Если вы все еще испытываете проблемы, используйте список рассылки Connector/ODBC, посмотрите раздел 9.1.

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

64-Bit Windows и ODBC Data Source Administrator

Я установил 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.

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

Error 10061 (Cannot connect to server)

Соединяясь или используя кнопку Test в ODBC Data Source Administrator я получаю ошибку 10061 (Cannot connect to server).

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

"Transactions are not enabled" Error

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

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

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

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

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

  • Гарантируйте, что вы не включили опцию disable transactions в DSN.

#DELETED# Records Reported by Access

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

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

  • При использовании Access 2000, получите и установите новейший (версия 2.6 или выше) Microsoft MDAC (Microsoft Data Access Components) с http://support.microsoft.com/kb/110093. Это исправляет ошибку в 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.

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

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

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

    • Имейте еще один фиктивный столбец TIMESTAMP.

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

    • Удалите и пересоздайте связь таблицы из Access.

    Старые записи будут показаны как #DELETED#, но недавно добавленные/обновленные правильно.

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

Как обработать ошибки Write Conflicts или Row Location?

Если вы видите следующие ошибки, выберите опцию 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 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 со столбцами TEXT или VARCHAR. Можно исправить эту ошибку, модернизировав Connector/ODBC до версии 3.51.02 или выше.

SQL_NO_DATA Exception из ODBC.NET

Используя ODBC.NET с Connector/ODBC, получая пустую строку (нулевой длины), это выдает исключение 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(*) возвращает BIGINT, а ADO не может понять столь большое число, выберите опцию Change BIGINT columns to INT (значение 16384).

Операционная ошибка многократного шага

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

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

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

Modified Record Error

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

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

  • Добавьте primary key для таблицы.

  • Добавьте столбец типа timestamp.

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

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

Прямая компоновка приложений под 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, чтобы определить информацию об определении данных.

S1T00 Error

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

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

Ошибка "Table does not exist" в Access 2000

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

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

Пакетные запросы

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

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

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

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

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

Ошибка Outer Join

Используя некоторые приложения, чтобы получить доступ к серверу MySQL, используя Connector/ODBC и внешние объединения, об ошибке сообщают относительно Escape-последовательности Outer Join.

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

Символы Hebrew/CJK

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

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

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

Двойная запись в установленном списке программ

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

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

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

Значения урезаются до 255 символов

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

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

Выключение Data-At-Execution

Действительно ли возможно отключить data-at-execution через параметр?

Если вы не хотите использовать data-at-execution, удалите соответствующие требования. Например:

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 with NULL в вызове на SQLBindCol().

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

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

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

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

Поиск

 

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

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