3

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

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

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

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

我有一台 64 位机器,所以我安装了 64 位驱动程序并尝试建立连接。即使那样,我也收到相同的数据源名称未找到错误。但是,从 ODBC 数据源管理员那里,如果我选择系统 DSN,我可以看到安装的 MySQL 驱动程序,并且我可以在服务器中为我的数据库创建一个新的数据源。

但是,从 VBA 中,如果我调用数据源,我会收到另一个错误。

[Microsoft][ODBC Driver Manager] 指定的 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 中列出的驱动程序。

有人可以帮我弄清楚实际上做错了什么吗?

4

3 回答 3

3

运行任务管理器并查找 EXCEL.EXE - 很可能它后面有 *32(问题是您正在运行 32 位版本的 excel,尝试使用 64 位版本的 MySQL 连接器/ODBC)。

解决:

  1. 请务必在卸载 64 位驱动程序之前删除任何已定义的 ODBC 数据源 (DSN)(如果驱动程序已卸载,则无法删除)
  2. 卸载 64 位 MySQL 连接器/ODBC 驱动程序
  3. 下载并安装 32 位版本的 MySQL Connector/ODBC 驱动程序
  4. 要设置 DSN,请参阅此http://forums.mysql.com/read.php?37,357786,360776#msg-360776

注意:您可以同时安装 64 位和 32 位驱动程序,因此不需要卸载 64 位版本。我不需要两者,所以我没有测试是否可以同时安装两者。

于 2013-10-30T13:09:01.643 回答
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
于 2013-05-25T18:29:22.367 回答
0

我最近自己也在与这个问题作斗争。

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

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

这不是一个很好的解释,但它对我有用。

于 2014-02-12T17:35:44.980 回答