1

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

PG::UndefinedObject: 错误: 类型 "json" 不存在
第 1 行: ALTER TABLE "filters" ADD COLUMN "search_string" json

我安装了 pg 版本:- 9.3.1

运行 rails db 输出为 :-psql (9.3.1, server 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 . 有什么解决办法???

4

1 回答 1

0

psql是一个客户端工具,与 PostgreSQL 服务器不同。这就是为什么它们可以处于不同的版本级别。

大概你有postgresql-9.1服务器的postgresql-client-9.3包和客户端的包(包括psql)。

如果您作为 shell 命令运行:

$ COLUMNS=200 dpkg -l 'postgres*'

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

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

要升级到新的 PostgreSQL 版本,现在推荐的方法是通过pgdgpostgresql.org 人员维护的存储库。

请参阅https://wiki.postgresql.org/wiki/Apt上的说明

于 2013-11-07T14:38:53.680 回答