Назад | Перейти на главную страницу

Пусть php PDO работает с последней версией PostgreSQL (Debian / Ubuntu)

Я установил PostgreSQL и драйвер php PDO на свой 14.04 Ubuntu следующим образом:

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

Который установил PostgreSQL 9.3 и работал нормально, но теперь я хочу запустить 9.5. Поэтому я обновил пакеты postgresql, добавив репозиторий PostgreSQL после это руководство и обновление пакетов.

Однако phpinfo по-прежнему сообщает 9.3 после перезапуска apache:

PostgreSQL (libpq) версии 9.3.10

Я могу представить, что мне как-то также нужно обновить пакет php5-pgsql? Но как тогда? Или я должен сделать что-нибудь еще?

Хорошо, я решил эту проблему, но какое-то время боролся, поэтому я точно не знаю, какой самый простой способ сделать. Но я опишу рецепт, который, вероятно, подойдет и для других.

Первое важное замечание: я думаю, что решил проблему, поскольку могу использовать новую функцию upsert, представленную в 9.5 (INSERT .. ON CONFLICT DO UPDATE ..). Однако мой phpinfo () по-прежнему сообщает о версии 9.3.

Еще одно слово о проблемной ситуации: после добавления репозитория PostgreSQL и выполнения 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