在 Windows 7 64-bit 上使用 SQL Toolkit 或 Database Connectivity Toolkit 時出現錯誤 -2147467259

更新 Dec 22, 2023

產品資訊

軟體

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

操作系統

  • Windows

問題敘述

我在 Windows 7 64-bit 上使用 32-bit LabVIEW 或 LabWindows / CVI,並且從 DB Tools Open Connection VI 中收到以下錯誤:

Error -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


為什麼會收到此錯誤,我該如何解決?

解決方案

引發此錯誤的原因是,64-bit 版本的 odbcad32.exe (ODBC Data Source Administrator 程序) 被使用來設定Data Source Name (DSN),而真正應使用的是 32-bit 的版本。

首先,請確保已安裝 32-bit 版本的 MySQL 。在Windows 7 x64上將有兩個名為 odbcad32.exe 的不同檔案。即使兩者都被命名為 odbcad32.exe ,一個是 64-bit 的,另一個是 32-bit 的。您可以通過路徑位置分辨出哪個是64-bit ,哪個是32-bit:
  • 64-bit 版本在 <Windows>/System32
  • 32-bit 版本在 <Windows>/SysWOW64

有兩個方式可以糾正該錯誤:
  1. 修復ODBC設置。為此,請打開 odbcad32.exe 的 64-bit 版本,刪除 database configuration,然後以 Administrator身份打開 32-bit 版本並在那裡設定 database。
  2. 更改您的 LabVIEW 或 LabWindows/CVI 程式碼,將 UDL 與確切的 connection string 一起使用。您可以在 How Do I Set Up a Microsoft Data Link File (UDL) Through LabVIEW? 了解更多信息。

相關資訊

32-bit LabVIEW 或 LabWindows/CVI 應用程式試著使用 64-bit odbcad32.exe 創建的 DSN 來連接到 database,這在架構上是不可能的。這就是 Error message 中提到的 architecture mismatch。 32-bit LabVIEW 或 LabWindows/CVI 應用程式只能使用通過 32-bit odbcad32.exe 創建的 DSN。 相關討論可以參考 Microsoft Developer Network's 的文章 Managing Data Sources