我正在构建一个从朋友那里克隆的 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