PDO异常“无法找到驱动程序”(pgsql)

时间:2013-03-27 18:56:28

标签: php windows pdo

我下载并安装了随Stackbuilder一起提供的PostgreSQL 9.2.3。

我使用PostgreSQL Stackbuilder安装Apache(2.2.22)& PHP(5.4.5)。

现在我正在尝试使用PDO连接到数据库,但我收到driver not found错误。

我没有评论extension=php_pgsql.dll&我的php.ini文件中有extension=php_pdo_pgsql.dll

我的phpinfo();功能显示它们已启用。 enter image description here

我注意到的主要问题是,在我的 php \ 目录中,没有包含这些文件的 ext \ 目录。我原以为这些文件会自动安装到 php \ 子目录。

这些扩展可以存储在哪里;我需要指定一个绝对路径让php找到它们吗?

更新 所以我进入php.ini并启用了启动错误。当我启动命令行php.exe时,我得到错误,说明php_pgsql.dll&找不到php_pdo_pgsql.dll。

enter image description here 看起来他们试图在D:驱动器上引用它们,我没有。我将所有内容安装到E:驱动器上的同一目录中。我无法在任何地方找到扩展名(也不能用php)。

2 个答案:

答案 0 :(得分:6)

在Wamp(windows)......

复制C:\wamp\bin\php\php5.x.xx\libpq.dll

粘贴在C:\Windows\System32\

答案 1 :(得分:1)

在Wamp上,有2个php.ini文件,你必须检查Postgresql扩展是否同时存在! 延长线是

sCommandText = "exec xp_cmdShell 'bcp.exe'"+Database + ".." + TableName + " in "  + 
                 FileName + " -c -q -U " + UserId + " -P " + Password +  "-t  ";

SqlConnection conn = new SqlConnection(ConnectionString);
conn.Open(); 

SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = sCommandText;

return cmd.ExecuteNonQuery();

请检查

extension=php_pdo_pgsql.dll

同时检查

C:\wamp\bin\apache\apache2.4.9\bin\php.ini

添加扩展行后,重新启动Apache,它将起作用。