Excel VBA连接到MySQL - 架构不匹配错误

时间:2013-05-25 17:59:26

标签: mysql excel-vba mysql-connector mysql-connect vba

我正在尝试使用VBA从位于服务器上的本地计算机连接到MySQL。最初我收到以下错误。

[Microsoft] [ODBC驱动程序管理器]未找到数据源名称且未指定默认驱动程序。

经过一番研究,我发现应首先安装MySQL ODBC驱动程序。我从下面的位置安装了驱动程序。

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

我有64位机器,因此我安装了64位驱动程序并尝试建立连接。即便如此,我收到了相同的数据源名称未找到错误。但是,从ODBC数据源管理员,如果我选择系统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驱动程序

对于这两个驱动程序,我的连接是从ODBC数据管理员成功的。

我试图找出架构不匹配问题的解决方案,如果我通过在64位计算机上从以下位置运行ODBC应用程序来创建DSN,我会阅读它,它可能会起作用。

C:\ Windows \ System32下\ odbcad32

但是对于这种情况,我收到了相同的架构不匹配错误。

我甚至尝试在我的机器上安装MySQL Connector / ODBC 5.2.5 32位。对于这种情况,我无法在系统DSN中看到列出的驱动程序。

有人可以帮我弄清楚究竟出了什么问题吗?

3 个答案:

答案 0 :(得分:3)

我可以选择并循环结果集并进行插入。 db中验证的数据。如果您需要帮助,请告诉我

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

答案 1 :(得分:3)

运行任务管理器并查找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#msg-360776
  5. 注意:您可以同时安装64位和32位驱动程序,因此不需要卸载64位版本。我不需要两者,所以我没有测试是否可以同时安装。

答案 2 :(得分:0)

我最近自己就是在解决这个问题。

根据iOSdedude的建议,我按照您最初发布的链接,下载了32位驱动程序,我的ODBC连接再次开始工作。

我正在运行Windows 7,我的操作系统在“我的电脑”下显示64位 - >属性 - >系统信息,所以我很惊讶地看到64位驱动程序无法正常工作。

对于为什么会这样有效,并不是一个很好的解释,但它对我有用。