![为什么 psql -version 输出与连接到我的应用程序的 psql 版本之间存在差异?我该如何解决这个问题](https://linux22.com/image/1043515/%E4%B8%BA%E4%BB%80%E4%B9%88%20psql%20-version%20%E8%BE%93%E5%87%BA%E4%B8%8E%E8%BF%9E%E6%8E%A5%E5%88%B0%E6%88%91%E7%9A%84%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E7%9A%84%20psql%20%E7%89%88%E6%9C%AC%E4%B9%8B%E9%97%B4%E5%AD%98%E5%9C%A8%E5%B7%AE%E5%BC%82%EF%BC%9F%E6%88%91%E8%AF%A5%E5%A6%82%E4%BD%95%E8%A7%A3%E5%86%B3%E8%BF%99%E4%B8%AA%E9%97%AE%E9%A2%98.png)
我正在构建一个从朋友那里克隆的 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