在Windows 7 64位上使用SQL Toolkit或Database Connectivity Toolkit时出现错误-2147467259

更新 Dec 22, 2023

适用于

软件

  • LabVIEW
  • LabVIEW Database Connectivity Toolkit
  • LabWindows/CVI
  • LabWindows/CVI SQL Toolkit

操作系统

  • Windows

问题详述

我在Windows 7 64位上使用32位LabVIEW或LabWindows/CVI时,从DB Tools Open Connection VI收到以下错误:

错误 -2147467259(0x80004005)
ADO Error: Exception occurred in Microsoft OLE DB Provider for ODBC driver. 
Microsoft ODBC Driver manager: The specified DSN contains an architecture mismatch between the driver and application in NI-Database-API.lvlib


为什么我会收到这个错误,应该如何解决?

解决方案

出现此错误是由于,在本应使用32位版本的odbcad32.exe(ODBC数据源管理器程序)来配置数据库的数据源名称(DSN)时,错误地使用了64位版本的ODBC数据源管理器程序。

首先应确保安装了32位版本的MySQL 。在Windows 7 x64上将有两个名为odbcad32.exe的文件。虽然两者都命名为odbcad32.exe ,但一个是64位,另一个是32位。您可以通过其目录位置判断哪个是64位,哪个是32位:
  • 64位版本位于<Windows>/System32中
  • 32位版本位于<Windows>/SysWOW64中

有两种方法可以纠正错误:
  1. 修复ODBC设置。为此,请打开64位版本的odbcad32.exe ,删除数据库配置,然后以管理员身份打开32位版本并在那里配置数据库。
  2. 更改LabVIEW或LabWindows/CVI代码,使用具有确切连接字符串的UDL。您可以在如何通过LabVIEW设置Microsoft数据链接文件(UDL)中了解更多相关信息。

相关信息

32位LabVIEW或LabWindows/CVI应用程序若尝试使用64位odbcad32.exe创建的DSN连接到数据库,这在架构上是不可能的。这就是错误消息中所提到的体系结构不匹配。32位LabVIEW或LabWindows/CVI应用程序只能使用32位版本的odbcad32.exe创建的DSN。 微软开发者网站的文章“ 管理数据源 ”中讨论了此问题。