Win7 64位系统下VB6连接MySQL提示ODBC数据源未找到求助
首先得明确一个关键:VB6是32位程序,它只会识别32位的ODBC驱动,和你的系统是64位没有直接关系——你在64位ODBC管理器(C:\Windows\System32\odbcad32.exe)里看不到MySQL驱动是正常的,那是给64位应用用的;你能在32位ODBC管理器(C:\Windows\SysWOW64\odbcad32.exe)里看到驱动,说明32位驱动安装是没问题的。
针对你的报错[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified,可以按以下步骤排查:
1. 核对连接字符串的驱动名称与细节
确保你代码里的驱动名称和32位ODBC管理器里显示的完全一致,包括空格、版本号。比如你用的MySQL ODBC 5.3 Unicode Driver,要确认32位ODBC里的驱动名称就是这个,没有拼写错误。
另外检查连接字符串里的小疏漏:
sDatabase = "DRIVER={MySQL ODBC 5.3 Unicode Driver};Server=192.168.0.221;Port=3307;UID=root;Password=Pass;Database=Database ;OPTION=3;"
注意Database=Database ;这里的参数值后面多了个空格,会被ODBC当成数据库名称的一部分,建议改成Database=Database;(去掉空格)。
2. 确认VB6项目的ADO引用正确
打开你的VB6项目,进入工程 -> 引用,确保只勾选了一个版本的Microsoft ActiveX Data Objects(推荐用2.8版本,兼容性最好),不要同时勾选多个版本(比如2.1和2.8),这会导致ADO组件冲突,引发驱动加载问题。
3. 手动注册32位ODBC驱动
有时候安装程序可能没正确注册驱动,你可以手动操作:
- 打开32位命令提示符:找到
C:\Windows\SysWOW64\cmd.exe,右键选择「以管理员身份运行」 - 执行注册命令(路径根据你的实际安装位置调整,默认路径如下):
执行后如果弹出「DllRegisterServer在xxx.dll已成功」的提示,说明注册成功。regsvr32 "C:\Program Files (x86)\MySQL\MySQL Connector ODBC 5.3\myodbc5w.dll"
4. 用管理员权限运行VB6
右键VB6编辑器图标,选择「以管理员身份运行」,然后再测试连接。64位系统下,普通权限可能无法正常加载32位驱动组件,导致报错。
5. 用DSN方式验证驱动可用性
先在32位ODBC管理器里创建一个系统DSN:
- 打开
C:\Windows\SysWOW64\odbcad32.exe - 切换到「系统DSN」标签,点击「添加」
- 选择
MySQL ODBC 5.3 Unicode Driver,配置好服务器地址、端口、账号密码、数据库名称,测试连接确保成功 - 修改你的VB6代码,用DSN连接:
sDatabase = "DSN=你创建的DSN名称;UID=root;Password=Pass;" Set gConn = New ADODB.Connection gConn.Open sDatabase
如果这样能连接成功,说明驱动本身是正常的,问题出在直接使用驱动的连接字符串上,再回头检查原连接字符串的拼写细节即可。
6. 对比正常运行的64位电脑
和另外两台能正常运行的64位电脑对比以下几点:
- MySQL ODBC驱动的版本是否完全一致(比如都是5.3.10的32位版本)
- VB6项目的ADO引用版本是否相同
- 连接字符串的参数是否有差异
- 系统是否安装了相同的Win7补丁(部分补丁可能影响ODBC组件的兼容性)
内容的提问来源于stack exchange,提问作者Hanz Cheah

