Excel VBA подключиться к MySQL - ошибка несоответствия архитектуры

Я пытаюсь подключиться к MySQL с моей локальной машины, расположенной на сервере, используя VBA. Изначально я получал сообщение об ошибке ниже.

[Microsoft] [ODBC Driver Manager] Не найдено имя источника данных и не указан драйвер по умолчанию.

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

http://dev.mysql.com/downloads/connector/odbc/

У меня есть 64-битная машина, поэтому я установил драйвер для 64-битной системы и попытался установить соединение. Даже тогда я получал то же самое имя источника данных, не найденная ошибка. Однако от администратора источника данных ODBC, если я выбираю System DSN, я вижу установленный драйвер MySQL и могу создать новый источник данных для моей базы данных на сервере.

Однако из VBA, если я вызываю источник данных, я получаю еще одну ошибку.

[Microsoft] [Диспетчер драйверов ODBC] Указанный DSN содержит несоответствие архитектуры между драйвером и приложением.

Вот как я вызываю источник данных из моего VBA.

Dim oConn As ADODB.Connection
Set oConn = New ADODB.Connection
oConn.Open "data_source_name"

Кроме того, для 64-разрядного разъема ODBC я могу видеть два драйвера, как показано ниже в моем системном DSN.

  • MySQL ODBC 5.2 ANSI Драйвер
  • MySQL ODBC 5.2 Unicode Driver

Для обоих драйверов соединение установлено успешно от администратора данных ODBC.

Я попытался найти решение проблемы несоответствия архитектуры и прочитал, что если я создаю DSN, запустив приложение ODBC из расположенного ниже расположения на 64-битной машине, это может сработать.

C: \ Windows \ System32 \ odbcad32

Однако и для этого сценария я получил ту же ошибку несоответствия архитектуры.

Я даже пытался установить MySQL Connector/ODBC 5.2.5 32 бит на моей машине. В этом случае я не могу увидеть драйвер, указанный в системном DSN.

Может ли кто-нибудь помочь мне понять, что я на самом деле делаю не так?

3 ответа

Решение

Я могу выбрать и зациклить наборы результатов и сделать вставки. данные проверены в дБ. дайте мне знать, если вам нужна помощь

windows 7 Ultimate
version 6.1 (build 7601: service pack 1)
64 bit
************************************************************************
ODBC Data Source Administrator
run by command:    %windir%\system32\odbcad32.exe

2 drivers:
MySQL ODBC 5.2 ANSI Driver , 5.02.05.00, Oracle, MYODBC5A.DLL, 4/4/2013
MySQL ODBC 5.2 Unicode Driver , 5.02.05.00, Oracle, MYODBC5W.DLL, 4/4/2013
************************************************************************
create System DSN, named hp
using Unicode Driver
dsn=hp
descr=hp
tcpip server=192.168.1.11
user=root
password=xxxxx
Database=test
************************************************************************
ODBC Data Source Admin tool
far right tab called About
Admin, Control Panel, Cursor Library, Driver Mgr, Localized R DLL, Unicode Cursor Lib all Version 6.1.7601-ish
************************************************************************
MSFT Office Professional Plus 2010
Version 14.0.6129.5000 (64 bit)
VBA 7.0
Tools Menu / References / References - VBAProject, scroll down, click on:
Microsoft ActiveX Data Objects 6.1 Library
References Location= c:\program files\common files\system\ado\msado15.dll
************************************************************************
code same, get into an excel Macro:
Sub Macro1()
'
' Macro1 Macro
'

Dim oConn As ADODB.Connection
Dim rsPass As ADODB.Recordset
Dim sql As String

Set oConn = New ADODB.Connection
oConn.Open "hp"
Set rsPass = New ADODB.Recordset
sql = "select * from charlie1"
rsPass.Open sql, oConn
rsPass.Close


sql = "insert into charlie1 (billybob,birthdate,funny_num) values (5,now(),383.111)"
rsPass.Open sql, oConn


End Sub

Запустите диспетчер задач и найдите EXCEL.EXE - скорее всего, после него *32 (проблема в том, что вы используете 32-разрядную версию Excel и пытаетесь использовать 64-разрядную версию MySQL Connector/ODBC).

Разрешить:

  1. Обязательно удалите все определенные источники данных ODBC (DSN) перед удалением 64-разрядного драйвера (невозможно удалить, если драйвер уже удален)
  2. Удалите 64-разрядный драйвер MySQL Connector / ODBC
  3. Загрузите и установите 32-разрядную версию драйвера MySQL Connector / ODBC
  4. Чтобы настроить DSN, см. Этот http://forums.mysql.com/read.php?37,357786,360776.

Примечание. Возможно, вы сможете установить как 64-разрядные, так и 32-разрядные драйверы, и, следовательно, не потребуется удалять 64-разрядную версию. Я не нуждался в обоих, поэтому я не проверял, возможно ли установить оба.

Я недавно боролся с этой проблемой сам.

Воспользовавшись советом iOSdedude, я перешел по ссылке, которую вы первоначально разместили, скачал 32-битный драйвер, и мое ODBC-соединение снова заработало.

Я работаю под управлением Windows 7, и моя ОС отображает 64-разрядную версию в разделе "Мой компьютер" -> "Свойства" -> "Сведения о системе", поэтому я с удивлением обнаружил, что 64-разрядный драйвер не работает.

Не очень хорошее объяснение, почему это работает, но у меня это сработало.

Другие вопросы по тегам