VB6中ADODB连接AWS RDS MySQL报错-2147467259,VBA可正常连接
解决VB6中ADODB连接AWS RDS MySQL报80004005错误的方案
我之前也碰到过VB6和VBA之间ADODB连接表现不一致的问题,结合你的场景,给你几个排查和解决的方向:
1. 严格匹配ODBC驱动的位数
VB6是纯32位应用,哪怕你的系统是64位,也必须安装32位版本的MySQL ODBC 8.0驱动。很多人会直接装64位驱动,导致VB6无法加载驱动文件,直接抛出80004005错误。
- 去MySQL官网下载对应版本的32位Connector/ODBC 8.0
- 安装完成后,打开
控制面板\所有控制面板项\ODBC数据源(32位),手动配置一个连接测试,确认能正常连接AWS RDS后,再把测试通过的连接字符串移植到VB6代码里
2. 修正连接字符串的格式问题
你的VBA代码里的连接字符串有个多余的分号(DRIVER后面多了一个),VBA可能做了容错处理,但VB6对格式的要求更严格:
原代码:
Set cnn = New ADODB.Connection cnn.ConnectionString = "DRIVER={MySQL ODBC 8.0 Unicode Driver};" & _ ";Server=myserver.rds.amazonaws.com" & _ ";Database=UserManage" & _ ";Uid=admin" & _ ";Pwd=mypassword"
修正后:
Set cnn = New ADODB.Connection cnn.ConnectionString = "DRIVER={MySQL ODBC 8.0 Unicode Driver};" & _ "Server=myserver.rds.amazonaws.com;" & _ "Database=UserManage;" & _ "Uid=admin;" & _ "Pwd=mypassword"
注意去掉DRIVER后面拼接的第一个分号,确保每个参数前的分号和前一个参数紧密衔接。
3. 显式启用SSL连接(AWS RDS强制要求)
AWS RDS的MySQL 8.0默认要求SSL连接,VBA所在的Office环境可能自动处理了SSL协商,但VB6需要显式指定SSL参数:
在连接字符串中添加SSL_MODE=REQUIRED参数,示例如下:
Set cnn = New ADODB.Connection cnn.ConnectionString = "DRIVER={MySQL ODBC 8.0 Unicode Driver};" & _ "Server=myserver.rds.amazonaws.com;" & _ "Database=UserManage;" & _ "Uid=admin;" & _ "Pwd=mypassword;" & _ "SSL_MODE=REQUIRED"
如果暂时没有配置AWS SSL证书,可临时添加SSL_VERIFY_SERVER_CERT=0跳过证书验证(仅用于测试,生产环境建议配置官方证书)。
4. 检查VB6的ADODB库版本
打开VB6的工程->引用菜单,确认勾选的是Microsoft ActiveX Data Objects 2.8 Library或更高版本,避免使用过于老旧的ADODB库版本(比如2.0),老旧版本可能不兼容新的ODBC驱动特性。
5. 测试基础网络连通性
在VB6运行的机器上,用32位命令提示符(C:\Windows\SysWOW64\cmd.exe)执行以下命令:
ping myserver.rds.amazonaws.com:确认域名解析正常telnet myserver.rds.amazonaws.com 3306:确认RDS的3306端口能被该机器访问,如果不通,检查AWS RDS的安全组是否开放了该机器IP的访问权限
内容的提问来源于stack exchange,提问作者Duong Sansen
相关产品推荐
相关产品推荐

