Working around "Architecture Mismatch" errors when using Microsoft Access
From time to time, our customers ask us what their options are when their attempt to use an Access database as their application's back end fails with:
[Microsoft][ODBC Driver Manager]The specified DSN contains an architecture mismatch between the Driver and Application
The cause of the problem is the architecture of the driver used to connect to Access is different to that of their application, that is, they are attempting to use a 64-bit Access driver with 32-bit application. They end up in this situation because recent versions of Access use the ACCDB format for their database files, and the Access driver for ACCDB files is 64-bit only.
(The driver in question is an ODBC driver for Access. ODBC is a data access technology that enables applications to connect to any database for which an ODBC driver is available.)
Given this situation, the following workarounds are available:
- Use an MDB format Access database instead, which, in Microsoft Access, is labelled Microsoft Access Databases (2002-2003 format) in the File New Database dialog box.
Windows includes a 32-bit Access ODBC driver, which is compatible with MDB files (but not ACCDB files.) You will need to configure an Access data source in the 32-bit version of ODBC Data Source Administrator to use this driver. To run the 32-bit version of the ODBC Data Source Administrator, in the Windows Run dialog box, enter:
%windir%\syswow64\odbcad32.exe
You need to check whether you require any of the additional Access features that ACCDB files provide before committing to this workaround however.
- Install Microsoft's AccessDatabaseEngine. This provides a 32-bit Access ODBC driver that supports ACCDB format database files. However, Windows 8 and above are not listed as supported operating systems for the AccessDatabaseEngine.
- Use the Easysoft ODBC-ODBC Bridge, which enables a 32-bit application to use a 64-bit ODBC driver (and vice versa).