让 php PDO 与最新版本的 PostgreSQL (Debian/Ubuntu) 一起工作

让 php PDO 与最新版本的 PostgreSQL (Debian/Ubuntu) 一起工作

我在我的 14.04 Ubuntu 上安装了 PostgreSQL 和 php PDO 驱动程序,如下所示:

sudo apt-get install postgresql postgresql-contrib
sudo apt-get install php5-pgsql

安装了 PostgreSQL 9.3 并且运行良好,但现在我想运行 9.5。因此我通过添加 PostgreSQL repo 来更新 postgresql 包,如下所示 本指南并更新软件包。

然而重新启动 apache 后 phpinfo 仍然报告 9.3:

PostgreSQL(libpq) 版本 9.3.10

我可以想象我也必须以某种方式更新 php5-pgsql 包?但那该怎么办呢?或者我应该做其他事情?

答案1

好吧,我解决了这个问题,但花了一段时间才解决,所以我不知道最简单的方法是什么。但我将描述一个可能对其他人也有用的方法。

第一个重要提示是:我认为我已解决了该问题,因为我可以使用 9.5 中引入的新 upsert 功能 (INSERT .. ON CONFLICT DO UPDATE ..)。但我的 phpinfo() 仍然报告版本 9.3。

关于问题情况还有一句话:添加 PostgreSQL repo 并执行后,apt-get upgrade我显然有两个版本的 PostgreSQL。

ls /usr/share/postgresql
9.3  9.5  

因此我做了以下修复:

dpkg --get-selections | grep postgresql

您将获得已安装的所有相关软件包的列表。我使用 --purge 卸载了所有软件包(这可能也会删除所有数据库,但对我来说没有问题,因为它们是空的)。

sudo apt-get remove --purge postgresql postgresql-9.5 postgresql-contrib etc.

它在某些软件包上给我报错,但当我重复此操作时,最终所有软件包都消失了。对 php pdo 驱动程序也这样做:

sudo apt-get remove --purge php5-pgsql

现在再次安装postgresql,只会安装9.5。

sudo apt-get install postgresql postgresql-contrib php5-pgsql 

相关内容