我正在构建一个我从朋友那里克隆的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。任何解决方案???
答案 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
存储库。