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).
Разрешить:
- Обязательно удалите все определенные источники данных ODBC (DSN) перед удалением 64-разрядного драйвера (невозможно удалить, если драйвер уже удален)
- Удалите 64-разрядный драйвер MySQL Connector / ODBC
- Загрузите и установите 32-разрядную версию драйвера MySQL Connector / ODBC
- Чтобы настроить DSN, см. Этот http://forums.mysql.com/read.php?37,357786,360776.
Примечание. Возможно, вы сможете установить как 64-разрядные, так и 32-разрядные драйверы, и, следовательно, не потребуется удалять 64-разрядную версию. Я не нуждался в обоих, поэтому я не проверял, возможно ли установить оба.
Я недавно боролся с этой проблемой сам.
Воспользовавшись советом iOSdedude, я перешел по ссылке, которую вы первоначально разместили, скачал 32-битный драйвер, и мое ODBC-соединение снова заработало.
Я работаю под управлением Windows 7, и моя ОС отображает 64-разрядную версию в разделе "Мой компьютер" -> "Свойства" -> "Сведения о системе", поэтому я с удивлением обнаружил, что 64-разрядный драйвер не работает.
Не очень хорошее объяснение, почему это работает, но у меня это сработало.