为什么 psql -version 输出与连接到我的应用程序的 psql 版本之间存在差异?我该如何解决这个问题

为什么 psql -version 输出与连接到我的应用程序的 psql 版本之间存在差异?我该如何解决这个问题

我正在构建一个从朋友那里克隆的 rails 应用程序。我使用的是 Ubuntu 13.10,rails 3.2.14。我使用的是 postgresql 数据库,当我尝试运行 rake db:migrate 时,它​​给出了一些错误,如下所示:

PG::UndefinedObject: 错误:类型“json”不存在第 1 行:ALTER TABLE“filters”添加列“search_string”json

我安装的 pg 版本:9.3.1

运行 rails db 输出是:-psql (9.3.1,服务器 9.1.10)

运行选择版本();:-i686-pc-linux-gnu 上的 PostgreSQL 9.1.10

为什么显示的 psql -version 与连接到我的数据库的版本不同?

我的朋友正在使用 9.2.4,我不知道为什么会发生此错误,我尝试了几次使用 purge 或 remove 命令降级以删除 9.3.1,一切顺利,但是当我检查 psql --version 时,它再次显示 9.3.1。有什么解决办法吗???

答案1

因为您可能安装了不同的客户端和服务器版本软件包。首先,我会检查您安装了哪些软件包:

dpkg -l | grep postgresql

如果您还没有安装 9.3 服务器包,请安装它。

如果您已经拥有它,请检查您正在运行哪些集群:

pg_lsclusters

如果您还没有 9.3 集群,请创建一个 ( pg_createcluster)。如果有,请记下端口号并确保连接到该端口。

答案2

Postgres 9.2 未针对 Ubuntu 13.10 打包,但 9.1 有。尝试这样做:

sudo apt-get purge postgresql*

sudo apt-get autoremove

sudo apt-get install postgresql-9.1

相关内容