我正在尝试使用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中看到如下两个驱动程序。
对于这两个驱动程序,我的连接是从ODBC数据管理员成功的。
我试图找出架构不匹配问题的解决方案,如果我通过在64位计算机上从以下位置运行ODBC应用程序来创建DSN,我会阅读它,它可能会起作用。
C:\ Windows \ System32下\ odbcad32
但是对于这种情况,我收到了相同的架构不匹配错误。
我甚至尝试在我的机器上安装MySQL Connector / ODBC 5.2.5 32位。对于这种情况,我无法在系统DSN中看到列出的驱动程序。
有人可以帮我弄清楚究竟出了什么问题吗?
答案 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) 。
要解决:
注意:您可以同时安装64位和32位驱动程序,因此不需要卸载64位版本。我不需要两者,所以我没有测试是否可以同时安装。
答案 2 :(得分:0)
我最近自己就是在解决这个问题。
根据iOSdedude的建议,我按照您最初发布的链接,下载了32位驱动程序,我的ODBC连接再次开始工作。
我正在运行Windows 7,我的操作系统在“我的电脑”下显示64位 - >属性 - >系统信息,所以我很惊讶地看到64位驱动程序无法正常工作。
对于为什么会这样有效,并不是一个很好的解释,但它对我有用。