VB.NET同时用ADODB操作Access与MariaDB的兼容问题求助
解决方案:解决Access与MariaDB驱动的位数兼容冲突
问题根源
你遇到的核心问题是32位/64位驱动的兼容性互斥:
- 原Access连接依赖32位的
Microsoft.ACE.OLEDB.12.0驱动,仅在x86架构下能被识别; - MariaDB的ODBC驱动若安装的是64位版本,仅能被64位程序(AnyCPU在64位系统上的运行模式)识别,x86程序找不到该驱动;反之若装32位MariaDB驱动,仅x86程序能识别。
最优解决方案:统一为x86架构,适配双驱动
这是改动最小的方案,完全匹配原Access程序的运行环境:
- 保持项目Target CPU为x86:无需修改原Access连接代码,确保ACE驱动正常工作。
- 安装32位MySQL ODBC 8.0 ANSI Driver:
- 卸载当前的64位MySQL ODBC驱动;
- 下载32位版本的MySQL ODBC 8.0 ANSI Driver并安装;
- 原MariaDB连接字符串无需修改,x86程序现在能正常识别
{MySQL ODBC 8.0 ANSI Driver}驱动。
验证:运行程序后,Access和MariaDB的ADODB连接均可正常打开。
备选方案:安装双位数驱动,适配AnyCPU架构
若需程序以64位模式运行(例如处理大内存场景):
- 安装64位ACE驱动:
- 下载64位的
Microsoft Access Database Engine 2010 Redistributable; - 若已安装32位Office,需通过命令行静默安装避免冲突:
AccessDatabaseEngine_x64.exe /passive
- 下载64位的
- 安装64位MySQL ODBC 8.0 ANSI Driver:确保驱动版本与程序运行位数匹配。
- 保持项目Target CPU为AnyCPU,此时64位程序可同时识别64位的ACE和MySQL ODBC驱动。
额外排查要点
- 用ODBC数据源管理器验证驱动:
- 查看32位驱动:打开
C:\Windows\SysWOW64\odbcad32.exe; - 查看64位驱动:打开
C:\Windows\System32\odbcad32.exe; - 确认对应位数的MySQL ODBC驱动和ACE驱动已存在。
- 查看32位驱动:打开
- 避免手动引用独立的ADODB.dll:直接从COM引用中添加
Microsoft ActiveX Data Objects 6.1 Library(或更高兼容版本),确保ADODB组件与程序位数匹配。
内容的提问来源于stack exchange,提问作者BobbyOpt
相关产品推荐
相关产品推荐

