我正在尝试通过PDO_ODBC访问PHP中的ODBC连接。这是我的代码:
$db = new PDO('odbc:MyDSN', '', '');
我收到了这个错误:
SQLSTATE [IM002] SQLConnect:0 [Microsoft] [ODBC驱动程序管理器]数据 未找到源名称且未指定默认驱动程序
我知道DSN正在运行,因为我可以在Python中使用pyodbc。类型是用户DSN - 是否需要是系统DSN?我没有指定驱动程序,因为我认为ODBC正在抽象,但也许我需要?底层数据库是Oracle,如果有帮助的话。
谢谢!
答案 0 :(得分:5)
实际上有两个单独的Microsoft ODBC管理员应用程序,一个用于32位,一个用于64.
正如this知识库文章解释:
32位版本的Odbcad32.exe文件位于 %systemdrive%\ Windows \ SysWoW64文件夹。
64位版本的 Odbcad32.exe文件位于%systemdrive%\ Windows \ System32中 文件夹中。
不,不是拼写错误 - 32位版本位于SysWoW64
文件夹中,64位位于System32
文件夹中。 (O_O)
我正在运行64位Web服务器,它正在检查DSN的64位ODBC库,而我在32位中使用它。降级服务器就行了。