我在我的 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