You have a 64 bit operating system, which usually comes with a more modern equipment, and specially a 64 bit server OS, which is most likely to be the case, and you need to install an ODBC driver that would work with a 32 bit application such as FileMaker Pro.
If you install a 64 bit ODBC driver, it will be listed and configurable in “ODBC Data Source Administrator” (StartControl PanelAll Control Panel ItemsAdministrative ToolsData Source (ODBC)), but it will not be able to work with FileMaker Pro (or any other 32 bit application).
On the other hand, if you try to install the 32 bit driver, the system will not recognise it, and it will not appear in your default Data Sources (ODBC) inside the control panel, so you will not be able to configure it and connect to MySQL.
Download MySQL ODBC Driver for free. MySQL ODBC Driver - MySQL Connector/ODBC (also known as MyODBC) allows you to connect to a MySQL database server using the ODBC database API on all Microsoft Windows and most Unix platforms, including through such applications and programming environments such as Microsoft Access, Microsoft Excel, and Borland Delphi. This tutorial will show you how to install ODBC connector in windows 64 bit, because when you have win 64 bits and want to install connector ODBC there will.
THERE IS A SOLUTION TO THIS PROBLEM – In many places you will read that this is IMPOSSIBLE – WHICH IS NOT TRUE. What you need to do is the following:
- Download and install the 32 bit MySQL driver, regardless of the fact that you are using a 64 bit OS.It will install the files in the following place (path):C:Program Files (x86)MySQLConnector ODBC 5.1
- Insteadof following the usual path via the Control Panel (Control PanelAll Control Panel ItemsAdministrative ToolsData Sources (ODBC) ) , where the 32 bit driver will not be recognised, YOU NEED TO FIND AND USE THE FOLLOWING PATH:
Database Source Admin tool path for configuring 32 bit drivers if installed on 64 bit Operating System
- Here you will be able to see your 32 bit ODBC driver and configure it to connect with the MySQL database, in the same way as you would do on a 32 bit system.
In this way, FileMaker Pro as a 32 bit application will be able to recognise and use the ODBC driver installed on a 64 bit Operating System. Please notice that 64 bit applications WILL NOT be able to use the 32 bit driver, so if you are connecting some other, 64 bit application, for example MS Access 2010, you will need to install a 64 bit driver as well, and configure it via the usual path: Control PanelAll Control Panel ItemsAdministrative ToolsData Sources (ODBC)
The two drivers will not be installed in the same directory so you could use automatic install feature for both of them. By defauld, the 32bit ODBC driver will be installed in: C:Program Files (x86)MySQLConnector ODBC 5.1, while the 64bit ODBC driver will install inside:C:Program FilesMySQLConnector ODBC 5.1, and you should be able to configure it using your Control PanelAdministrative ToolsData Source (ODBC) path.
If you where reading about connecting FileMaker Pro to MySQL database with MySQL ODBC driver, you can now go back to the article and proceed with instructions.
64-bit ODBC primer — when to use a 64-bit ODBC driver; ODBC issues on 64-bit Linux, UNIX and Windows platforms; background information on 64-bit architecture, operating systems and programming models.
- ODBC on 64-bit Platforms
- ODBC on 64-bit Linux and Unix Platforms
- unixODBC Driver Manager
- ODBC on 64-bit Linux and Unix Platforms
- Frequently Asked Questions
32-bit computer hardware is based on a processor capable of manipulating 32 bits (binary digits) of information at a time and using 32 bits to represent memory addresses. 64-bit hardware uses 64 bits to do the same thing. Usually, 32-bit operating systems run on 32-bit hardware, although it is possible to run 32-bit operating systems on some 64-bit computers. 64-bit operating systems run on 64-bit hardware.
Operating systems consist of a kernel (which allocates system resources, launches applications and manages memory, files and peripheral devices) and operating system libraries. 32-bit operating systems have a 32-bit kernel. 64-bit operating systems have a 64-bit kernel. Some operating systems, for example Solaris 7.0+ and AIX 5, can boot either a 32-bit or a 64-bit kernel. A 64-bit kernel is required to run 64-bit applications. (On AIX 5, IBM state that 32-bit and 64-bit applications can run with either a 32-bit or 64-bit kernel. However, for applications that use kernel extensions, this is conditional on the support for the extension in both kernels.) An operating system with a 64-bit kernel can also run 32-bit applications.
Operating system libraries are required to build and run applications. To build 32-bit applications, they must be linked to 32-bit system libraries. To build 64-bit applications, they must be linked to 64-bit system libraries.
32-bit applications are compiled such that memory addresses are 32-bit (4 bytes) in size. These applications can directly access up to 4 GB of virtual memory (the memory potentially available for use on a computer, which may be partially simulated by secondary storage such as a hard disk). This virtual memory limit is present regardless of the amount of physical memory installed on the machine. By contrast, 64-bit applications are compiled such that memory addresses are 64-bits (8 bytes) in size and can use more than 4 GB of virtual memory.
64-bit applications require a machine with a 64-bit processor and a 64-bit operating system. 32-bit applications can be run on both 32-bit and 64-bit machines/operating systems. However, only 64-bit applications can take advantage of the 64-bit capabilities of the processor and operating system. Depending on the application, these may include the 64-bit memory addressing and arithmetic capabilities of the processor, as well as increased system resources provided by the operating system.
Advantages of 64-bit Computing
A 32-bit processor can handle a 32-bit integer, and a 64-bit processor can handle a 64-bit integer. A 64-bit processor can therefore handle a larger range of integer values. Since memory addresses are integers that specify a location in memory, a processor that can handle more integer values can also handle more memory addresses. (Each byte of memory in a computer must have a unique address so that applications can keep track of and identify the memory.)
On 32-bit machines, memory addresses are 32 bits in length and stored as base-2 numbers. (The base-2, or 'binary,' number system expresses integer values as combinations of two digits: 0 and 1.) There are approximately 4 billion possible different 32-bit binary numbers (232), which accounts for the 4 GB memory address space limit on machines with a 32-bit processor.
By contrast, a 64-bit processor can theoretically address up to 16 exabytes (EB) (264 bytes) of memory, giving access therefore to practically unlimited memory.
64-bit memory addressing enables applications to store large data sets entirely in memory. This eliminates the performance penalty associated with swapping portions of the data in and out to disk. For example, the increased memory space available on a 64-bit platform enables large databases to be preloaded into memory, improving data access times for database client applications. Memory is accessed hundreds of times faster than disk drives, so replacing I/O access to data with access via memory is extremely beneficial for database performance. Because more database operations can run at memory speed rather than disk speed, 64-bit machines enable databases to scale to support more users.
On 32-bit systems, memory management extensions exist that enable applications to use more than 4 GB of memory. These extensions are Physical Address Extension (PAE) and the Microsoft Windows-only feature Address Windowing Extension (AWE). Databases such as Oracle® and SQL Server can take advantage of PAE and AWE to gain access to additional memory beyond their 4 GB limit. One constraint with PAE and AWE, however, is that memory above 4 GB can only be used to store data, it cannot be used to store or execute code. So, for example, the memory is not available to other memory consuming database operations such as caching query plans, sorting, indexing, joins, or for storing user connection information. By contrast, 64-bit machines make memory available to all database processes and operations.
Other memory intensive applications that benefit from running on a 64-bit platform include computer-aided design/computer-aided manufacturing (CAD/CAM), scientific modelling and other engineering applications. These applications usually perform optimally by holding large amounts of data in memory. Graphics programs will also see performance improvements as they, too, often deal with large amounts of data, especially when rendering 3-D imagery.
In addition, some types of data processing work more efficiently in a 64-bit environment, such as encryption. Most encryption algorithms are based on very large integers—the larger the integers, the more secure the encryption. Encryption applications can take advantage of 64-bit integers and gain a consequent performance boost on 64-bit systems.
For applications that do not need to address memory beyond the 32-bit processor limit of 4 GB, 64-bit machines still provide substantial benefits in terms of processing speed. With a 64-bit processor, each general-purpose register is 64-bits wide and can represent a much larger integer. (A register is high-speed memory within a processor that provides the fastest way for a processor to access data. A general-purpose register is available for any use rather than being reserved for a specific purpose by the processor or operating system.) Programming languages such as C and C++ can perform mathematical operations on 64-bit integers. 64-bit integer types can be contained within a single register on a 64-bit machine (as opposed to a 32-bit machine, where 64-bit numbers have to be split across two 32-bit registers). The register-width difference produces a substantial reduction in resource requirements when performing 64-bit mathematics. Mathematical operations on 64-bit numbers consume fewer registers and require fewer processor instructions on a 64-bit machine than on a 32-bit machine.
Improvements in parallel processing and bus architectures, enable 64-bit machines to support a larger number of processors (up to 64). An increased capacity for processor support means that a single machine has the potential to support more processes, applications, and users.
On Solaris machines, 32-bit applications using standard I/O are limited to 256 file descriptors, which limits the number of open files that the application can maintain. (A file descriptor is an integer used to identify an open file for the purpose of file access.) This limit is present because Solaris machines use a char type to represent the file descriptors, which can only hold a range values of 0–255. If there are no free file descriptors in the 0-255 range, an I/O error results if the application attempts to open another file. The limit is not applicable to 64-bit applications, which can use up to 2 billion descriptors.
64-bit Unix and Linux Platforms
There are several 64-bit Unix and Linux Platforms, and these based around different 64-bit processors. For example, Easysoft ODBC drivers are available on the following 64-bit Unix and Linux platform/processor combinations:
On 64-bit Windows, pointers are 64-bit, which gives 64-bit ODBC applications the potential to take advantage of 64-bit memory addressing. For example, an application could use 64-bit addressing to provide a large buffer for LOB data. A 32-bit value may not be sufficient to return the length of data in a large buffer on 64-bit platforms. This may be the reason why Microsoft chose to increase the size of the SQLLEN and SQLULEN types from 32-bit longs to 64-bit long longs.
ODBC on 64-bit Linux and Unix Platforms
unixODBC Driver Manager
It is possible to build the unixODBC ODBC driver manager on 64-bit platforms with either 32-bit or 64-bit SQLLEN/SQLULEN types.
In unixODBC 2.2.13, the default size of SQLLEN/SQLULEN types changed from 32 bits to 64 bits. In unixODBC 2.2.13+, the
BUILD_LEGACY_64_BIT_MODE macro in sqltypes.h controls whether SQLLEN/SQLULEN types are 32-bit or 64-bit (the default). To build unixODBC 2.2.13+ with 32-bit SQLLEN/SQLULEN types, use
CFLAGS to define
BUILD_LEGACY_64_BIT_MODE before configuring the unixODBC build system. For example:
(The unixODBC source distribution is available to download from the unixODBC web site, ftp://ftp.unixodbc.org/pub/unixODBC.)
Mysql Odbc 64 Bit Download 2017
If your application includes sqltypes.h and you want to use it with a unixODBC 2.2.13+ Driver Manager that is built with 32-bit SQLLEN/SQLULEN types, you need to build the application with the same define as the one used when building unixODBC. Alternatively, include the file unixodbc_conf.h.
You can use unixODBC’s
odbc_config program to display information about how unixODBC was built. The unixODBC 2.2.13+ version of
odbc_config supports the
--ulen option, which reports whether the unixODBC driver manager was built with 64-bit or 32-bit SQLLEN/SQLULEN types. If
odbc_config --ulen displays
-DSIZEOF_SQLULEN=8, unixODBC was built with 64-bit SQLLEN/SQLULEN types. If
odbc_config --ulen displays
-DSIZEOF_SQLULEN=4, unixODBC was built with 32-bit SQLLEN/SQLULEN types.
Note that not all unixODBC distributions include
odbc_config. Note also that
odbc_config only reports information about the unixODBC distribution it was shipped with. For example, you have two copies of unixODBC installed on a machine: one copy built from source, which includes
odbc_config; one copy supplied with the operating system, which does not include
odbc_config program cannot be used to provide information about the operating system version of unixODBC.
In unixODBC 2.3+, the
odbcinst program can be used to report whether the unixODBC driver manager was built with 64-bit or 32-bit SQLLEN/SQLULEN types. In the example output, the driver manager that was installed by an Easysoft ODBC driver was built with 32-bit SQLLEN/SQLULEN types:
Note If your version of unixODBC was built with 32-bit SQLLEN/SQLULEN types, you need to use it with an ODBC driver that has been built with 32-bit SQLLEN/SQLULEN types. If your version of unixODBC was built with 64-bit SQLLEN/SQLULEN types, you need to use it with an ODBC driver that has been built with 64-bit SQLLEN/SQLULEN types. (See How do I know whether my Linux/UNIX ODBC driver is the 64-bit or 32-bit SQLLEN/SQLULEN version?.) If you are using or want to use an Easysoft ODBC driver with an existing version of unixODBC (i.e. a version that is not included in the Easysoft driver distribution), see How do I know whether my Linux/UNIX ODBC driver is the 64-bit or 32-bit SQLLEN/SQLULEN version? and How do I obtain a 64-bit or 32-bit SQLLEN/SQLULEN Easysoft ODBC driver for Linux/UNIX platforms?.
The default behaviour for unixODBC 2.2.12 is to build the driver manager with 32-bit SQLLEN/SQLULEN types. The
SIZEOF_LONG macros in unixodbc_dist_dir/include/sqltypes.h determine whether these types are 32-bit (the default) or 64-bit. To build unixODBC 2.2.12 with 64-bit SQLLEN/SQLULEN types:
- Download the unixODBC distribution, unpack and cd into the directory created by unpacking the distribution file:
- Use the
CPPFLAGSenvironment variable to define
- Configure the unixODBC build system. For example:
For information about unixODBC configure options, see our Linux/UNIX ODBC article. In the example command, the options specify that unixODBC should be built without GUI components or sample ODBC drivers.
The default for the unixODBC 2.2.12 source distribution is to build 32-bit SQLLEN/SQLULEN types. However, this does not mean that a unixODBC 2.2.12 package included with a Linux or Unix distribution will be built with 32-bit SQLLEN/SQLULEN types too. For example, on RedHat, Debian and Ubuntu Linux distributions, the unixODBC package is built with 64-bit SQLLEN/SQLULEN types.
Applications that pass 64-bit values to SQLLEN/SQLULEN ODBC API parameters must be used with a version of unixODBC that is built with 64-bit SQLLEN/SQLULEN types (and vice versa). If unixODBC is built with 64-bit SQLLEN/SQLULEN types, it must be used with an ODBC driver that is built with 64-bit SQLLEN/SQLULEN types (and vice versa). If you are using a version of unixODBC that was included in an Easysoft ODBC driver distribution, both ODBC driver manager and ODBC driver will be built with the same size SQLLEN/SQLULEN types. However, the Easysoft driver installation script gives you the option to use the version of unixODBC included in the operating system distribution rather than the driver distribution. If an Easysoft ODBC driver built with 32-bit SQLLEN/SQLULEN types was used with a unixODBC driver manager built with SQLLEN/SQLULEN types, the results will be unpredictable. Side effects could include data loss/corruption or your application crashing.
For example, Oracle® DG4ODBC passes 64-bit values to SQLLEN/SQLULEN ODBC API parameters, and therefore must be used with a 64-bit SQLLEN/SQLULEN ODBC driver manager and ODBC driver. To illustrate the potential side effects of not doing this, we used the following application/driver manager/driver combinations to retrieve NVARCHAR SQL Server data from the Northwind Suppliers table:
- DG4ODBC/64-bit SQLxLEN ODBC Driver Manager/32-bit SQLxLEN SQL Server ODBC driver.
- DG4ODBC/32-bit SQLxLEN ODBC Driver Manager/32-bit SQLxLEN SQL Server ODBC driver.
In both cases, we experienced data loss:
At the time of writing, applications that Easysoft know to have been built with 64-bit SQLLEN/SQLULEN types are:
- PHP (CentOS package)
iODBC Driver Manager
iODBC is another ODBC driver manager that is available for Linux and Unix platforms (and Mac OS X and Windows). The default for the iODBC source distribution is to build the iODBC driver manager with 64-bit SQLLEN/SQLULEN types. These types were introduced in the 3.52.1 release of iODBC.
ODBC on 64-bit Windows Platforms
On 64-bit Windows platforms, there is both a 32-bit and 64-bit version of the Microsoft ODBC Driver Manager. The 64-bit version (%windir%System32Odbc32.dll):
- Loads and unloads 64-bit ODBC drivers.
- Processes ODBC function calls made by 64-bit applications or passes them to a 64-bit ODBC driver.
The 32-bit version of the Driver Manager (%windir%SysWOW64Odbc32.dll):
- Loads and unloads 32-bit ODBC drivers.
- Processes ODBC function calls made by 32-bit applications or passes them to a 32-bit ODBC driver.
The Driver Manager implements the SQLDrivers and SQLDataSources APIs to allow an application to find out what ODBC drivers are installed and what ODBC data sources are defined. The SQLDrivers API provided by the 64-bit Microsoft ODBC Driver Manager only lists 64-bit ODBC drivers and vice versa. The SQLDataSources API provided by the 64-bit Microsoft ODBC Driver Manager does not list 32-bit system data sources and vice versa.
On 64-bit Windows platforms, there is both a 32-bit and a 64-bit version of ODBC Administrator, the application you use to manage ODBC data sources. The 64-bit ODBC Administrator is located in the standard location: Administrative tools in Control Panel. To run the 32-bit version of the ODBC Administrator, in the Windows Run dialog box, type:
Download Mysql Connector Odbc 64-bit Windows 7
The 64-bit version of ODBC Administrator enables you to:
- Add, modify and delete data sources for 64-bit ODBC drivers.
- See which 64-bit ODBC drivers are installed.
- Trace the ODBC API calls that are made by a 64-bit application.
The 32-bit version of ODBC Administrator enables you to do these tasks for 32-bit ODBC drivers and applications.
A system ODBC data source is visible to all users on the computer on which it has been defined. On 64-bit Windows platforms, system data sources for 64-bit ODBC drivers are stored in a Registry key called HKEY_LOCAL_MACHINESOFTWAREODBCODBC.INI; system data sources for 32-bit ODBC drivers are stored in a Registry key called HKEY_LOCAL_MACHINESOFTWAREWow6432NodeODBCODBC.INI. 64-bit system ODBC data sources are only visible to 64-bit applications. 32-bit system ODBC data sources are only visible to 32-bit applications. The WOW64 registry redirector intercepts calls made to certain portions of the registry and redirects them to another portion of the registry. Registry redirection affects the HKEY_LOCAL_MACHINESOFTWARE key. Registry calls made to this key by 32-bit applications are redirected to HKEY_LOCAL_MACHINESOFTWAREWow6432Node. So, for example, when a 32-bit application calls SQLDataSources, the resultant registry call is redirected from HKEY_LOCAL_MACHINESOFTWAREODBCODBC.INI to HKEY_LOCAL_MACHINESOFTWAREWow6432NodeODBCODBC.INI, and the only system data sources that are returned are ones for 32-bit ODBC drivers.
The 32-bit Microsoft ODBC Driver Manager will not attempt to load an ODBC driver specified by a 64-bit system data source. If a 32-bit application attempts to connect to a 64-bit system data source, the connection fails with the error:
This error occurs irrespective of whether there is also 32-bit version of the ODBC driver specified in data source installed on the computer.
The 64-bit Microsoft ODBC Driver Manager will not attempt to load an ODBC driver specified by a 32-bit system data source. If a 64-bit application attempts to connect to a 32-bit system data source, the connection also fails with the 'architecture mismatch' error.
A user data source is only visible to the user who created it. On 64-bit Windows platforms, user data sources for both 32-bit and 64-bit ODBC drivers are stored in a Registry key called HKEY_CURRENT_USERSOFTWAREODBCODBC.INI. The registry redirector does not affect this key. User data sources are visible to all ODBC-enabled applications therefore, irrespective of application or driver architecture. For example, the 32-bit and 64-bit versions of ODBC Administrator list user data sources for both 32-bit and 64-bit ODBC drivers. (To avoid confusion, you can indicate the driver architecture in the data source name, for example, by suffixing the name with '_32' or '_64'.)
If a 32-bit application attempts to connect to a valid user data source for a 64-bit ODBC driver, the connection will succeed if a 32-bit version of the driver is installed. Otherwise, the connection will fail with the 'architecture mismatch' error. For example, Microsoft’s SQL Server ODBC driver installs both a 64-bit library (%WINDIR%System32sqlsrv32.dll) and a 32-bit library (%WINDIR%SysWOW64sqlsrv32.dll) on 64-bit Windows platforms. If a 32-bit application attempts to connect to a valid user data source for the 64-bit version of the SQL Server ODBC driver, the connection will succeed. This is because the WOW64 file system redirector loads the 32-bit version of the ODBC driver (in %windir%SysWOW64) rather than the 64-bit driver (in %windir%System32) specified by the data source.
Similarly, if a 64-bit application attempts to connect to a valid user data source for a 32-bit ODBC driver, the connection will succeed if a 64-bit version of the driver is installed.
As mentioned, on 64-bit Windows, some ODBC drivers install both a 32-bit and a 64-bit version of the driver. For example, Microsoft’s SQL Server and SQL Server Native Client ODBC drivers; Easysoft’s Firebird, InterBase and ODBC-ODBC Bridge drivers. These ODBC drivers can be used with both 32-bit and 64-bit ODBC applications therefore.
On 64-bit Windows, some ODBC drivers are only available as a 64-bit library. For example, Microsoft’s ACE-based Access ODBC Driver (*.mdb, *.accdb). Some ODBC drivers are only available as a 32-bit library irrespective of the operating system platform. For example, Microsoft’s Jet-based Access ODBC Driver (*.mdb). (Note that if you attempt to connect a 64-bit application to User data source for the Jet-based Access ODBC Driver, the 64-bit ACE-based driver is not transparently loaded. Although both are capable of connecting to an MDB format Access database, they are different drivers with a different file name.)
If an ODBC driver is specified on the connection string, the driver architecture must be the same as the application’s. Otherwise, the connection will fail with the error:
For example, the preceding error will be returned if a 64-bit application uses a DSN-less connection to connect to Microsoft’s Jet-based Access ODBC driver:
Starting in Windows 8, both the 32-bit and 64-bit version of the ODBC Administrator are located in Administrative tools in Control Panel. The icons for the two versions are labelled:
- ODBC Data Sources (32-bit)
- ODBC Data Sources (64-bit)
The User DSN and System DSN tabs in the ODBC Administrator include a Platform column, which tells you whether a data source can be used with a 32-bit or a 64-bit application or both.
Both versions of the ODBC Administrator list all installed drivers and available data sources regardless of the driver architecture. If the driver architecture is different to that of the ODBC Administrator, you cannot use the tool to create, edit or remove a data source for that driver. For example, to create a System data source for the 32-bit only Microsoft Access ODBC driver, you need to use the 32-bit ODBC Administrator. This data source will be visible in the 64-bit ODBC Administrator but not editable or removable.
Windows PowerShell Cmdlets for ODBC
Windows PowerShell is a command-line/scripting environment from Microsoft. Built-in Windows PowerShell commands, called cmdlets, enable users to control and automate the administration of the Windows operating system and applications that run on Windows.
Starting in Windows 8, a number of PowerShell cmdlets are provided for listing and managing ODBC drivers and data sources. For example, the
Add-OdbcDsn cmdlet enables an ODBC data source to be added. This sample cmdlet adds a 64-bit System ODBC data source for Easysoft's Derby ODBC driver:
Some ODBC cmdlets have a
-Platform parameter, which lets you set the target architecture for the cmdlet.
When listing ODBC drivers (
Get-OdbcDriver) or data sources (
-Platform can be set to
All. The default value for
All, and so both 32-bit and 64-bit ODBC drivers and data sources are listed.
When managing ODBC drivers (
Set-OdbcDriver) or data sources (
-Platform can be set to
64-bit. By default,
-Platform matches the architecture of the process in which the cmdlet is being run. For example, if you start a 32-bit PowerShell session by running the icon labelled Windows PowerShell (x86) (which runs a PowerShell executable located in the WOW64 directory), and omit
Platform when adding a data source, your data source will be 32-bit. (Note that you can add 64-bit ODBC data sources or configure 64-bit ODBC drivers from a 32-bit PowerShell process and vice versa.)
ODBCConf is a Windows command line utility that enables you to install and configure ODBC drivers and configure ODBC data sources.
On 64-bit Windows platforms, there is both a 32-bit and 64-bit version of ODBCConf.
The 32-bit version of the ODBCConf executable (odbcconf.exe) is located in this folder:
The 64-bit version of the ODBCConf executable is located in folder:
If you want to install or configure a 32-bit ODBC driver or configure a data source for a 32-bit ODBC driver, use the 32-bit version of ODBCConf.
If you want to install or configure a 64-bit ODBC driver or configure a data source for a 64-bit ODBC driver, use the 64-bit version of ODBCConf.
Accessing Oracle® from 32-bit ODBC Applications on 64-bit Windows Platforms
The Easysoft ODBC-Oracle Driver accesses Oracle® by using the Oracle® database client, which uses Oracle® Net to communicate with the database. Some versions of the Oracle® Net software fail with the error
ORA-12154: TNS:could not resolve the connect identifier specified if the application with which you are trying to connect is installed in a directory that contains parentheses in its name. This issue affects 32-bit applications on 64-bit Windows platforms because Windows installs 32-bit applications under the drive:Program Files(x86) directory.
The Oracle® bug report associated with this problem is Bug 3807408 Cannot Externally Authenticate User With Quote In Username (Oracle MetaLink login required).
To fix this problem and therefore enable 32-bit applications to access Oracle® through ODBC/Oracle Net, obtain and apply an Oracle® patch set fromthat contains a fix for bug 3807408.
If the patch is not available for your version of the Oracle® client, you can try working around the problem by starting your application from the command prompt. In the command line, replace
Program Files(x86); with
For more information about Oracle® on 64-bit Windows issues and workarounds, see the MSDN forum posting Connecting to Oracle® on 64-bit (x64) machines.
ODBC on 64-bit Mac OS X Platforms
Starting with version 10.2 (Jaguar), the iODBC Driver Manager is included with Mac OS X. Source code for each version of iODBC that Apple has shipped with the operating system (starting with Mac OS X 10.3) is available on the Apple Open Source web site. (To access the relevant iODBC web page, choose your version of Mac OS X from the Releases list.)
The iODBC Driver Manager package includes:
- An ODBC Driver Manager.
- A command line application that returns various iODBC configuration details.
- A command line ODBC application for testing ODBC data sources.
Apple also provide ODBC Administrator (Applications > Utilities > ODBC Administrator), a GUI application for managing ODBC data sources. ODBC Administrator lets you:
- Add, modify and delete user and system data sources.
- See which ODBC drivers are installed.
- Trace the ODBC API calls an application makes.
- Enable iODBC connection pooling, a mechanism that can speed up connection times for applications that run continuously, but repeatedly close and reopen the same connection.
Note Starting with Mac OS X version 10.6 (Snow Leopard), ODBC Administrator is no longer shipped with the operating system and must be downloaded and installed separately. ODBC Administrator is available to download from the Apple Support web site as a Disk Image file (.dmg).
Mac OS X packages containing more recent versions of iODBC than the one provided by Apple can be downloaded from the iODBC web site:
- The iODBC Replacement SDK for /usr (iodbc-usr-sdk.zip), which updates the iODBC libraries that Apple ship with the operating system (/usr/lib/libiodbc*). In addition, the SDK provides the C header files required to build ODBC applications along with the source code for iodbctest, the iODBC demonstration application.
- The iODBC Driver Manager and Software Development Kit (iodbc-sdk-version-macosx-osx-version.dmg), which provides three iODBC frameworks: iODBC.framework (Driver Manager), iODBCinst.framework (Driver Manager configuration), iODBCadm.framework (GUI data source administrator, providing an alternative to ODBC Administrator).
A framework is is a type of a bundle (directory) that contains shared resources such as dynamic shared libraries, header files, icons and images. The system loads the code and resources of a framework into memory, as needed, and shares the one copy among all applications that need to access the framework.
If you want to run an ODBC application in 64-bit mode, the ODBC Driver Manager it is linked with must be 64-bit capable. In 64-bit mode, the ODBC Driver Manager can only load a 64-bit capable ODBC driver. Similarly, if you want to run an ODBC application in 32-bit mode, the ODBC Driver Manager it is linked with must be 32-bit capable. In 32-bit mode, the ODBC Driver Manager can only load a 32-bit capable ODBC driver.
On the Macintosh computer we used during testing for this article (Mac OS X 10.7.2), the iODBC Driver Manager we installed from either of the SDKs mentioned earlier in this section supported both 32-bit and 64-bit architectures.
To find out which architectures your ODBC driver supports, use the
file command. In a Terminal window, run:
where driver is the full path to the ODBC driver binary. On Intel 64 Macintosh computers, the
file command output will contain 'x86_64' if the ODBC driver binary contains a 64-bit driver. If the ODBC driver binary, contains a 32-bit driver, the file command output will contain 'i386'. For example, Easysoft’s SQL Server ODBC driver, is a universal binary that contains both a 32-bit and a 64-bit driver:
On PowerPC G5 Macintosh computers, the file command output will contain 'ppc64' if a 64-bit version of an ODBC driver is present in the ODBC driver binary and 'ppc7400' if a 32-bit version is present.
If your application and ODBC driver architectures are different, your connection will fail. For example, the following connection fails because the application can only run in 32-bit mode and the ODBC driver can only run in 64-bit mode:
Frequently Asked Questions
Do I need to use a 32-bit or 64-bit ODBC driver?
Whether you use a 32-bit or 64-bit ODBC driver depends on whether your application is 32-bit or 64-bit. A 64-bit ODBC driver can only be used with a 64-bit application. Similarly, a 32-bit ODBC driver can only be used with a 32-bit application.
64-bit applications must be linked against 64-bit libraries (known as shared objects on Unix and DLLs on Windows). For this reason, 64-bit applications can only link against a 64-bit ODBC Driver Manager shared object (or DLL). 64-bit ODBC Driver Managers can only load 64-ODBC drivers.
For the same reason, a 32-bit ODBC driver can only be used with a 32-bit application.
Note that it does not matter whether the database you are connecting to is 32-bit or 64-bit. Your choice of ODBC driver is dictated by the architecture of the client application not the database.