我正在尝试为应用程序设置一个新的postgres odbc连接。
这是在32位Windows 7系统上完成的。我安装了最新的postgresql 9.6& psqlodbc 0905,并没有错误。当我添加odbc连接字符串并使用postgres登录测试连接时,它会失败,并显示以下错误:
由于初始化提供程序中的错误,测试连接失败。 由于系统错误182,无法加载指定的驱动程序: (PostgreSQL UNICODE,C:\ Program 文件\ psqlODBC \ 0905 \ BIN \ psqlodbc35w.dll)
这是连接字符串:
驱动器= {的PostgreSQL UNICODE};服务器= 127.0.0.1,端口= 5432;数据库= Postgres的; UID = postgres的; PWD = postgres的;
然后我安装了Visual C ++可再发行包装程序版本2008和2010。重新启动该框。还是一样的问题。
Postgres + odbc +其他安装完成且没有任何错误。
这太令人沮丧了。
请..有关如何解决此问题的任何想法都会有所帮助。?!
更新:我测试了以下内容: 1.安装较旧的postgres& psdqlodbc版本 2.在开始时添加了到PATH env变量的psqlodbc路径 3.卸载独立的psqlodbc安装,并从postgresql包安装Stackbuilder以下载并安装psqlodbc组件。
所有这些都没有任何用处。
最终更新:我可以通过使用psqlodbc_09_03_0400解决此问题。无论出于何种原因,其他版本都会出现错误。
答案 0 :(得分:2)
显然,根据Microsoft index错误代码,错误182表示ERROR_INVALID_ORDINAL
,在this answer的帮助下,我相信意味着postgresql ODBC驱动程序正在加载另一个DLL并尝试调用其中不存在的函数。
最可能的原因是系统正在加载psqlodbc所依赖的DLL的错误版本。事实上,我发现this thread其他人遇到了同样的问题(尽管早在2005年)。
如果您安装了包含psqlodbc所依赖的DLL之一的其他软件包,或者甚至是psqlodbc的其他版本,则可能会发生这种情况。
尝试更改Windows搜索路径,将包含psqlodbc驱动程序的目录放在前面,以确认是否是这种情况。如果可行,您可能希望尝试缩小问题,直到找到确切的DLL冲突,并在可能的情况下将其删除。
您正在使用的psqlodbc软件包可能存在一些打包问题 - 如果是这种情况,您可以尝试卸载该软件包并安装早期版本。
答案 1 :(得分:1)
最终更新:我能够通过使用psqlodbc_09_03_0400来解决这个问题。无论出于何种原因,其他版本都会出现错误。