今天在64位的系统下安装MSSQL2005和mysql,MSSQL2005创建mysql的链接服务器,
运行 select user_id,user_name from openquery(OA,'select * from user where user_id=''我的ID''')
但出现以下提示
-----------------------------------
链接服务器"(null)"的 OLE DB 访问接口 "MSDASQL" 返回了消息 "[Microsoft][ODBC 驱动程序管理器] 在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配"。
消息 7303,级别 16,状态 1,第 1 行-----------------------------
经查询,原来是使用的ODBC配置程序不对,windows server 2008 R2 企业版自带有两个版本的odbc配置程序:
64位版的位置:C:\windows\system32\odbcad32.exe
32位版的位置:C:\windows\sysWOW64\odbcad32.exe
安装32位的mysql ODBC驱动,通过32位版的ODBC配置后,执行正常。
=============================================================================
想不通为啥64位的目录是system32,而32位的目录是sysWOW64,这不正好颠倒了吗?
我也遇到类似情况,安装64位驱动,odbc测试正常,但是程序运行提示“驱动程序和应用程序之间的体系结构不匹配驱动程序和应用程序之间的体系结构不匹配“,但是安装32位的驱动是没有问题的.需要注意的是copy mysql的4个lib文件时,64位的是放在对应的system32下,而32位的需要放在sysWOW64下.网上的资料不全,特此说明.
===================================================================================
补充一下,根据网上搜索曾经看到的资料,可以这样理解:在win64位系统下,system32下存放的是64位的相关文件,之所以称作system"32",是为了兼容之前的程序,打个比方,可能之前的程序,在读写关键配置文件时,是把路径写死的,XXXX/system32/XXX,这种比较Low的做法在我等Low级别程序员中很常见,为了这些软件不至于无法使用,根正苗红的关键文件不管是64还是32位系统,其路径仍在system32下;而sysWOW64,它的意思是64位系统下为了解决一些兼容性问题而存放的文件目录。打个比方,system32是好人,sysWOW64,是好人……是好人堆里挑出来的。。就这样理解吧!