You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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程序的运行环境:

  1. 保持项目Target CPU为x86:无需修改原Access连接代码,确保ACE驱动正常工作。
  2. 安装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位模式运行(例如处理大内存场景):

  1. 安装64位ACE驱动:
    • 下载64位的Microsoft Access Database Engine 2010 Redistributable;
    • 若已安装32位Office,需通过命令行静默安装避免冲突:
      AccessDatabaseEngine_x64.exe /passive
      
  2. 安装64位MySQL ODBC 8.0 ANSI Driver:确保驱动版本与程序运行位数匹配。
  3. 保持项目Target CPU为AnyCPU,此时64位程序可同时识别64位的ACE和MySQL ODBC驱动。

额外排查要点

  • 用ODBC数据源管理器验证驱动:
    • 查看32位驱动:打开C:\Windows\SysWOW64\odbcad32.exe;
    • 查看64位驱动:打开C:\Windows\System32\odbcad32.exe;
    • 确认对应位数的MySQL ODBC驱动和ACE驱动已存在。
  • 避免手动引用独立的ADODB.dll:直接从COM引用中添加Microsoft ActiveX Data Objects 6.1 Library(或更高兼容版本),确保ADODB组件与程序位数匹配。

内容的提问来源于stack exchange,提问作者BobbyOpt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 18:20:13