Подключение к Delphi XE2 dbExpress MySQL

Что бы я ни пробовал, я не мог заставить XE2 подключаться к MySQL с помощью dbExpress. На самом деле проблема многогранна. Во-первых, целевой MySQL 32- или 64-разрядный, что влияет на libmysql.dll, поставляемую с установкой MySQL, что, кажется, вводит в заблуждение, поскольку XE2 IDE является 32-разрядным приложением и принимает только 32-разрядные библиотеки DLL. Поэтому мне нужно было использовать 32-разрядную установку libmysql.dll, поместить ее в Windows \ System32 (или в саму папку проекта), а затем установить для целевой платформы компиляции 32-разрядную версию в моем проекте (чтобы она не работала). попробуйте использовать 64-битный dbxmys.dll, на всякий случай), но безуспешно. Все комбинации, которые я пробовал, приводили к следующей ошибке: «Ошибка DBX: драйвер не может быть должным образом инициализирован. Клиентская библиотека может отсутствовать .......»

Кто-нибудь, кто может заставить XE2 dbExpress подключиться к серверу MySQL? Мне требуется ваша помощь. Заранее спасибо.

64-разрядная версия Windows 7 (платформа разработки с XE2), 32-разрядная версия MySQL 5.5.16 (установлена ​​на удаленной 32-разрядной версии XP) / 64-разрядная версия MySQL 5.1.54 (установлена ​​на удаленной системе XP x64) (пробовали оба, используя их libmysql.dll)


person Brian Hawk    schedule 28.09.2011    source источник


Ответы (6)


ответ на ваш вопрос прост: установите mysql и скопируйте libmysql.dll из корзины mysql, как показано, например, (C: \ Program Files \ MySQL \ MySQL Server 5.1 \ bin), а затем перейдите в каталог xe2 и откройте корзину тоже, например (C: \ Program Files \ Embarcadero \ RAD Studio \ 9.0 \ bin), и вставьте его туда поверх уже запущенного libmysql.dll в нем.

person kodiz    schedule 15.12.2011

Так как у вас винда вроде x64, то x32 libmysql.dll надо ставить не в Windows\System32, а в Windows\SysWOW64. Или можно положить x32 libmysql.dll в папку XE2\Bin.

Если вы будете собирать приложение x64, то x64 libmysql.dll вы должны поместить в Windows\System32 или в папку EXE.

person oodesigner    schedule 28.09.2011
comment
Я читал пост, в котором говорилось об обратном о Windows \ System32 и Windows \ SysWOW64, но я все равно пробовал оба способа. Все еще та же ошибка. Я даже пробовал как dbxmys.dll, так и libmysql.dll в папку exe проекта (которая должна быть первым местом для поиска DLL). Похоже, мне здесь чего-то не хватает. Я заметил параметр TSQLConnection под названием VendorLibWin64 в проводнике данных- ›Изменить соединение-› Расширенное окно, которое вы не могли видеть в Инспекторе объектов обычно (вместе с VendorLib, к которому вы можете получить доступ через Инспектор объектов), и попытался также установить его вручную снова безрезультатно - person Brian Hawk; 28.09.2011
comment
Трудно сказать, что вы делаете не так. Не могли бы вы резюмировать - разрядность ваших окон, приложения, libmysql.dll. Куда и что ставите. Это поможет увидеть ошибку или подтвердить правильность настройки, но dbExpress не работает. - person robmil; 28.09.2011
comment
Позвольте мне понять это прямо: вы говорите, что при работе в 64-битном режиме 64-битная DLL помещается в system32, при работе в 32-битном режиме 32-битная DLL помещается в sysWOW64. Для меня в этом мало смысла. Обратное звучит намного разумнее. - person Johan; 28.09.2011
comment
Нет, я говорю: 64-битный режим - x64 dll - ›system32, x32 dll -› SysWOW64. 32-битный режим - x32 dll - ›system32. Вот такая история ... - person robmil; 28.09.2011
comment
Ребята, попробовал оба способа и не вышло. Кажется, что проблемы кроются в другом месте. Интересно, мог ли кто-нибудь на самом деле заставить эту работу. Кстати, моя конфигурация была такой: 64-разрядная Windows 7, 32-разрядная версия MySQL 5.5.16 (установлена ​​на удаленной 32-разрядной версии XP) / 64-разрядная версия MySQL 5.1.54 (установлена ​​на удаленной системе XP x64) ( пробовал с обоими, используя их libmysql.dll) - person Brian Hawk; 28.09.2011

Ответ на этот вопрос находится по адресу WiltonSoftware.com.

Что я сделал:

  1. Я загрузил zip-файл, содержащий libmysql.dll версии 5.1.59.
  2. Я создал папку C: \ Program Files (x86) \ MySQL \ MySQL Connector 5.1.59 \ lib
  3. Скопировал DLL в только что созданную папку
  4. Я добавил эту папку в переменную среды Windows Path

У меня это сработало!

person AlexSC    schedule 25.05.2012
comment
+1 Или вы можете просто создать новую папку в любой из системных папок, уже заданных с помощью Windows Path;) Но в целом это неплохая идея. - person Wh1T3h4Ck5; 20.10.2012

Немного поздно, но надеюсь, что это поможет:

  1. Установите последние обновления для Delphi XE2
  2. Установите собственный клиент SQL Server 2008
  3. Удалите все старое, например, SQL Server Express 2005 (если установлено)

Мне не удалось определить точную причину, по которой это работает. Возможно использование sqlncli.dll вместо oledb.dll.

person Quiesel    schedule 26.06.2012

Хммм, очевидно, вопрос, который я задал, был ошибкой в ​​XE2 и предположительно исправлен в обновлении 1 http://docwiki.embarcadero.com/RADStudio/en/Release_Notes_for_XE2#Please_Install_XE2_Update_1

Я попробую посмотреть, действительно ли это решило проблему.

person Brian Hawk    schedule 28.09.2011

Единственная версия, работающая с XE2, была 5.1.54, у меня была такая же проблема, и она решается этим.

person yasser almohanna    schedule 02.10.2011