Вот некоторые общие примечания и советы для использования Connector/ODBC в различной окружающей среде и инструментах. Примечания, обеспеченные здесь, основаны на событиях разработчиков и пользователей Connector/ODBC.
Этот раздел предоставляет общие вопросы помощи в области функциональности в MySQL и как использовать их с Connector/ODBC.
Получение значения столбца, который использует
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.
Поддержка динамического курсора
обеспечивается в Connector/ODBC 3.51, но динамические курсоры не позволены по
умолчанию. Можно позволить эту функцию в Windows, выбрав опцию
Enable Dynamic Cursor
в
ODBC Data Source Administrator.
На других платформах можно позволить динамический курсор, добавив
32
в значение
OPTION
, создавая DSN.
Драйвер Connector/ODBC был оптимизирован, чтобы обеспечить очень быструю работу. Если вы испытываете проблемы с исполнением Connector/ODBC или замечаете большой объем активности диска для простых запросов, есть много аспектов, чтобы проверить:
Гарантируйте, что выключен
ODBC Tracing
. С отслеживанием большая информация
зарегистрирована в файле менеджером ODBC. Можно проверить и отключить
трассировку в Windows, используя панель
в ODBC Data Source Administrator.
В macOS проверьте панель в ODBC
Administrator. См.
раздел 5.8.
Удостоверьтесь, что вы используете стандартную версию драйвера, а не отладочную версию. Отладочная версия включает дополнительные проверки.
Отключите трассировку драйвера Connector/ODBC и журналы запросов. Эти варианты позволены для каждого DSN, поэтому удостоверьтесь, что исследовали только DSN, который вы используете в своем запросе. В Windows можно отключить трассировку Connector/ODBC и журналы запросов, изменив конфигурацию DSN. В macOS и Unix гарантируйте, что трассировка драйвера (значение опции 4) и регистрация запросов (значение опции 524288) выключены.
Для получения дополнительной информации о том, как установить тайм-аут запроса в Microsoft Windows, выполняя запросы через ODBC, прочитайте документ базы знаний Microsoft http://support.microsoft.com/default.aspx?scid=kb%3Ben-us%3B153756.
Большинство программ должно работать с Connector/ODBC, но для каждой из перечисленных здесь, есть определенные примечания и подсказки, чтобы улучшить работу с Connector/ODBC.
Со всеми запросами гарантируйте, что вы используете последние драйверы Connector/ODBC, ODBC Manager и любые библиотеки поддержки и интерфейсы, используемые вашим запросом. Например, в Windows, использование последней версии Microsoft Data Access Components (MDAC) улучшит совместимость с ODBC в целом, и с Connector/ODBC.
Большинство приложений Microsoft было проверено с Connector/ODBC, включая Microsoft Office, Microsoft Access различные языки программирования, поддержанные в ASP и Microsoft Visual Studio.
Улучшить интеграцию между 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:
Оптимизация доступа приложения Access ODBC.
Если у вас есть проблемы при импортировании данных в Microsoft Excel, особенно числовые, даты и временные, это, вероятно, из-за ошибки в Excel, где тип столбца исходных данных используется, чтобы определить тип данных, когда те данные вставляются в ячейку в рабочем листе. Результат состоит в том, что Excel неправильно определяет содержание, это затрагивает формат отображения и данные, когда это используется в рамках вычислений.
Чтобы решить эту проблему, используйте функцию
CONCAT()
в запросах.
Применение CONCAT()
заставляет Excel
рассматривать значение как последовательность, ее Excel разберет и обычно
правильно определит вложенную информацию.
Однако даже с этим выбором, некоторые данные могут быть неправильно
отформатированы, даже при том, что исходные данные остаются неизменными.
Используйте опцию Format Cells
в Excel, чтобы
изменить формат показанной информации.
Чтобы быть в состоянии обновить таблицу, необходимо определить первичный ключ для нее.
Visual Basic с ADO не может обращаться с большими целыми числами.
Это означает что некоторые запросы вроде
SHOW PROCESSLIST
не работайте правильно. Решение должно использовать
OPTION=16384
в строке соединения ODBC
или выбор опции Change BIGINT columns to INT
на экране подключения Connector/ODBC. Можно также выбрать опцию
Return matching rows
.
Если у вас есть BIGINT
в вашем результате
можно получить ошибку [Microsoft] [ODBC Driver Manager]
Driver does not support this parameter
. Попытайтесь выбрать опцию
Change BIGINT columns to INT
на экране
подключения Connector/ODBC.
Выберите опцию Don't optimize column widths
.
Когда вы кодируете с 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.
Выберите опцию 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.
Некоторые статьи, которые могут помочь с Visual Basic и ASP:
MySQL BLOB columns and Visual Basic 6 by Mike Hillyer
(<
mike@openwin.org>
).
How to map Visual basic data type to MySQL types by
Mike Hillyer (
<mike@openwin.org>
).
Со всеми приложениями Borland, где Borland Database Engine (BDE) используется, выполните эти шаги, чтобы улучшить совместимость:
Обновление до BDE 3.2 или более нового.
Включите опцию Don't optimize
column widths
в DSN.
Включите опцию
Return matching rows
в DSN.
Когда вы начинаете запрос, можно использовать свойство
Active
или метод
Open
.
Свойство Active
ставится автоматически
при запуске запроса SELECT * FROM ...
.
Это может затронуть производительность для больших таблиц.
Кроме того, вот некоторый потенциально полезный код 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);
Проверено с BDE 3.0. Единственная известная проблема состоит в том, что,
когда схема таблицы изменяется, поля запроса не обновляются. BDE, однако,
кажется, не признает первичные ключи, только индекс, названный
PRIMARY
, хотя это не было проблемой.
Следующая информация взята из документации по 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-
, которая позволяет вам построить и удалить файл реестра DSN для
драйвера Connector/ODBC в ColdFusion.xxx
.zip
Для получения дополнительной информации о ColdFusion и Connector/ODBC посмотрите следующие сайты:
Open Office ( http://www.openoffice.org) How-to: MySQL + OpenOffice. How-to: OpenOffice + MyODBC + unixODBC.
Sambar Server ( http://www.sambarserver.info) How-to: MyODBC + SambarServer + MySQL.
Необходимо изменить его, чтобы произвести вывод
VARCHAR
вместо
ENUM
, поскольку это экспортирует последним
способом, который вызывает проблемы MySQL.
Выберите опцию Return matching rows
.
Если 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 в рамках отдельного приложения.
Следующий раздел детализирует некоторые распространенные ошибки и их исправление или альтернативное решение. Если вы все еще испытываете проблемы, используйте список рассылки Connector/ODBC, посмотрите раздел 9.1.
Много проблем могут быть решены, модернизировав ваши драйверы Connector/ODBC до последнего доступного выпуска. На Windows удостоверьтесь, что у вас есть последняя версия Microsoft Data Access Components (MDAC).
Я установил 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.
Соединяясь или используя кнопку ODBC Data Source Administrator
я получаю ошибку
10061 (Cannot connect to server).
Эта ошибка может быть поднята многими другими вопросами, включая проблемы с сервером, сетевые проблемы и брандмауэр и проблемы блокирования порта. Для получения дополнительной информации посмотрите Can't connect to [local] MySQL server.
О следующей ошибке сообщают, используя транзакции:
Transactions are not enabled
.
Эта ошибка указывает, что вы пытаетесь использовать
транзакции с таблицей MySQL, которая их не поддерживает.
Они поддерживаются в MySQL, используя ядро базы данных
InnoDB
, которое является
механизмом хранения по умолчанию в MySQL 5.5 и выше. В версиях MySQL до
MySQL 5.1 можно также использовать BDB
.
Проверьте следующее перед продолжением:
Проверьте, что ваш сервер MySQL поддерживает
транзакционное ядро базы данных. Используйте
SHOW ENGINES
, чтобы
получить список доступных механизмов хранения.
Проверьте, что таблицы, которые вы обновляете, используют транзакционное ядро базы данных.
Гарантируйте, что вы не включили опцию
disable transactions
в DSN.
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 в MySQL сообщает
Syntax Error
.
Эта ошибка специфичная для Access 97 и версий Connector/ODBC до 3.51.02. Обновление до последней версии Connector/ODBC решит проблему.
Экспорт данных из Microsoft DTS в MySQL сообщает
Syntax Error
.
Эта ошибка происходит только с таблицами MySQL со столбцами
TEXT
или
VARCHAR
. Можно исправить эту ошибку,
модернизировав Connector/ODBC до версии 3.51.02 или выше.
Используя ODBC.NET с Connector/ODBC, получая пустую строку (нулевой
длины), это выдает исключение SQL_NO_DATA
.
Можно получить патч, который решает эту проблему с http://support.microsoft.com/default.aspx?scid=kb;EN-US;q319243 .
SELECT COUNT(*) FROM
в Visual
Basic и ASP вернет ошибку.tbl_name
Эта ошибка происходит потому, что выражение
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.
Access вернет Another user had modified the record
that you have modified
, редактируя записи в связанной таблице.
В большинстве случаев это может быть решено, делая одну из следующих вещей:
Добавьте primary key для таблицы.
Добавьте столбец типа timestamp.
Используйте поля плавающих чисел только двойной точности. Некоторые программы могут потерпеть неудачу, когда они сравнивают значения одинарной точности.
Если эти стратегии не помогают, начните, делая файл журнала от менеджера ODBC (регистрация, которую вы получаете, из ODBCADMIN) и журнал Connector/ODBC, чтобы помочь вам выяснить, почему вещи идут не так, как надо. Для инструкций посмотрите раздел 5.8.
Компонуя приложение непосредственно с библиотекой Connector/ODBC под Unix или Linux, приложение падает.
Connector/ODBC под Unix или Linux не совместим с прямой компоновкой.
Чтобы соединиться с источником ODBC, используйте менеджер драйвера, такой как
iODBC
или unixODBC
.
Приложения в Microsoft Office не могут обновить таблицы,
которые имеют столбцы
DATE
или
TIMESTAMP
.
Это известная проблема с Connector/ODBC. Гарантируйте, что у поля
есть значение по умолчанию (а не NULL
)
и что значение по умолчанию отличное от нуля (то есть, что-то другое, чем
0000-00-00 00:00:00
).
Присоединяя 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
, чтобы определить информацию
об определении данных.
При вызове SQLTables
возвращается ошибка
S1T00
, но я не могу найти это в списке кодов
ошибки для Connector/ODBC.
S1T00
указывает, что тайм-аут
произошел в системе ODBC и не является ошибкой MySQL. Как правило, это
указывает, что связь, которую вы используете, устарела, сервер слишком занят,
чтобы принять ваш запрос или что сервер отвалился.
Связываясь с таблицами в Access 2000 и производя связи с таблицами программно, а не через интерфейс дизайнера таблиц можно получить ошибки о не существующих таблицах.
Есть известная проблема с определенной версией
msjet40.dll
, которая показывает эту проблему.
Затронутая версия 4.0.9025.0. Возвращение к более старой версии позволит вам
создать связи. Если вы недавно обновили свою версию, проверьте ваш каталог
WINDOWS
для более старой версии файла и
скопируйте ее в каталог драйверов.
Когда я пытаюсь использовать скомплектованные запросы, выполнение терпит неудачу.
Пакетная поддержка была добавлена в 3.51.18. Поддержка пакетных запросов
не позволена по умолчанию. Включите опцию
FLAG_MULTI_STATEMENTS
, значение 67108864, или поставьте галочку
Allow multiple statements в GUI.
Соединяясь с сервером MySQL, используя ADODB и Excel, иногда приложение не
общается с сервером и получает ошибку
Got an error reading communication packets
.
Эта ошибка может быть связана с Keyboard Logger 1.1 от PanteraSoft.com, который, как известно, вмешивается в сетевую связь между MySQL Connector/ODBC и MySQL.
Используя некоторые приложения, чтобы получить доступ к серверу 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) с использованием Connector/ODBC 5.1, но когда я получаю данные, текст не отформатирован правильно, и я получаю искаженные знаки.
Используя ASP и знаки UTF8, добавьте следующее к своим файлам ASP, чтобы гарантировать, что возвращенные данные правильно закодированы:
Response.CodePage = 65001 Response.CharSet = "utf-8"
У меня есть двойная запись MySQL Connector/ODBC в рамках моего списка Installed Programs, но я не могу удалить одну из них.
Эта проблема может произойти, когда вы модернизируете существующую установку Connector/ODBC вместо удаления и затем установки обновленной версии.
Чтобы решить проблему, используйте любые рабочие деинсталляторы, чтобы удалить существующие установки, тогда, вероятно, придется отредактировать содержание реестра. Удостоверьтесь, что у вас есть резервная копия вашей информации реестра прежде, чем делать попытку любого его редактирования!
Представляя запросы с использованием привязки параметров
UPDATE
, мои значения полей
усечены до 255 символов.
Гарантируйте, что опция FLAG_BIG_PACKETS
установлена для вашей связи. Это удаляет ограничение в 255 символов
на связанные параметры.
Действительно ли возможно отключить 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()
.
Когда вы вызываете SQLColumns()
для столбца таблицы, который является AUTO_INCREMENT
, столбец NULLABLE
набора результатов
всегда SQL_NULLABLE (1)
.
Это вызвано тем, что MySQL сообщает значение
DEFAULT
для такого столбца как
NULL
. Это означает, если вы вставляете
значение NULL
в столбец, вы получите следующее
целочисленное значение для счетчика
auto_increment
таблицы.