2013-11-06 1 views
1

Я создаю приложение для рельсов, которое я клонировал от своего друга. Я использую Ubuntu 13.10, рельсы 3.2.14. Я использую базу данных PostgreSQL и когда я пытаюсь запустить грабли БД: мигрировать это дает мне некоторые ошибки вроде этого:Почему существует разница между выходом psql -version и версией psql, подключенной к моему приложению?

PG::UndefinedObject: ERROR: type "json" does not exist
LINE 1: ALTER TABLE "filters" ADD COLUMN "search_string" json

Я установил стр версии: - 9.3.1

рельсами дБ выход является: -psql (9.3.1, сервер 9.1.10)

running select version(); : -PostgreSQL 9.1.10 на i686-pc-linux-gnu

Почему это показывает psql -версию, отличную от версии, связанной с моей базой данных?

Мой друг работает над 9.2.4 Я не знаю, почему эта ошибка возникает, я несколько раз пытался понизить с помощью очистки или удаления команд для удаления 9.3.1 все идет хорошо, но когда я проверяю psql -version это снова показывает мне 9.3.1. Любое решение ???

+0

Вы можете оставить свой Gemfile? – dax

ответ

0

psql - это клиентский инструмент, который поставляется в другом пакете, чем сервер PostgreSQL. Вот почему они могут быть на другом уровне версии.

Предположительно у вас есть пакет postgresql-9.1 для сервера и postgresql-client-9.3 пакет для клиента (который включает в себя psql).

Если вы работаете как команда оболочки:

$ COLUMNS=200 dpkg -l 'postgres*' 

он будет отображать список всех Postgres пакетов с их полными именами, версиями и статус. На этой основе вы можете узнать, что нужно установить или удалить.

Версия PostgreSQL, входящая в комплект поставки Ubuntu-13.10, - это 9.1. Тип JSON не существует в 9.1, он появился в 9.2, поэтому вы хотите обновить либо до 9.2, либо 9.3.

Чтобы перейти на новую версию PostgreSQL, рекомендуемый способ теперь находится в репозитории pgdg, поддерживаемом людьми postgresql.org.

См инструкции на https://wiki.postgresql.org/wiki/Apt