为什么psql -version输出和连接到我的应用程序的psql版本之间有区别?

时间:2013-11-06 14:16:04

标签: ruby json ruby-on-rails-3 postgresql ubuntu-13.10

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

  

PG :: UndefinedObject:错误:类型“json”不存在
  第1行:ALTER TABLE“过滤器”ADD COLUMN“search_string”json

我安装了pg版本: - 9.3.1

运行rails db输出是:-psql(9.3.1,server 9.1.10)

运行select version(); : - i686-pc-linux-gnu上的-postgreSQL 9.1.10

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

我的朋友正在研究9.2.4我不知道为什么会出现这个错误,我试过几次降级使用purge或删除命令来删除9.3.1一切顺利但是当我检查psql --version它再次向我展示了9.3.1。任何解决方案???

1 个答案:

答案 0 :(得分:0)

psql是一个客户端工具,它与PostgreSQL服务器位于不同的包中。 这就是他们可以处于不同版本级别的原因。

据推测,您拥有服务器的postgresql-9.1包和客户端的postgresql-client-9.3包(包括psql)。

如果您以shell命令运行:

$ COLUMNS=200 dpkg -l 'postgres*'

它将显示所有postgres包的列表及其全名,版本和状态。在此基础上,您可以找到需要安装或卸载的内容。

与Ubuntu-13.10捆绑在一起的PostgreSQL版本是9.1。 9.1中不存在JSON类型,它出现在9.2中,因此您要升级到9.2或9.3。

要升级到新的PostgreSQL版本,建议的方法是通过postgresql.org人员维护的pgdg存储库。

请参阅https://wiki.postgresql.org/wiki/Apt

上的说明