【问题标题】:Getting error - type "json" does not exist - in Postgresql during rake db migrate出现错误 - 类型“json”不存在 - 在 rake db 迁移期间在 Postgresql 中
【发布时间】:2014-08-27 08:00:43
【问题描述】:

我最近将一个项目克隆到我的本地 Ubuntu 机器上,因为我是远程的,并且在 rake db migrate 时,我收到以下错误:

PG::UndefinedObject: ERROR:  type "json" does not exist

我的表格中有几列是:

add_column :table, :column, :json

此迁移适用于工作中的 Mac,但不适用于此处。我已经尝试升级到 PostgreSQL 9.3.4,但问题仍然存在。我也试过sudo apt-get upgrade postgresql,问题依旧。

Ruby 版本是 2.1.0 Rails 版本是 4.0.3

【问题讨论】:

  • 没有。但是该问题的解决方案是我当前如何设置架构。我也尝试修改application.rb,如答案所示,但无济于事。
  • json 数据类型是在 Postgres 9.2 中引入的。它绝对应该适用于 v9.3.1。您没有透露您要连接的 Postgres 数据库集群的 实际 版本。 SELECT version() 能得到什么?
  • 升级 PostgreSQL 后尝试更新 PG gem。不确定它是否有帮助,但您可以尝试一下
  • 是的。所以命令显示9.1在线,9.3宕机。目前正在寻找解决方法。谢谢!

标签: ruby-on-rails ruby json postgresql


【解决方案1】:

如果您因任何原因遇到此问题,则说明您的 9.3 版本实际上并未运行。

我发现这个链接很有帮助:

http://nixmash.com/postgresql/upgrading-postgresql-9-1-to-9-3-in-ubuntu/

我从命令开始:

sudo service postgresql stop

并从那里运行所有命令。现在一切正常。

【讨论】:

【解决方案2】:

我已尝试升级到 PostgreSQL 9.3.4,但问题仍然存在

您很可能仍在连接到旧版本。试试SELECT version()

既然你提到了apt-get,你大概是在 Debian 或 Ubuntu 上。这些使用pg_wrapper 允许并行安装多个PostgreSQL。每个都有一个不同的端口号。第一次安装获得默认端口 5432。后续安装获得更高的端口。

您可以使用pg_lsclusters 查看安装。很可能您的 9.3 安装在端口 9433 上,您需要更改您的 database.yml(因为您使用的是 Rails)才能连接到该端口。

【讨论】:

  • 实际上,是的,这帮助我了解了 9.1 在线而不是 9.3。 9.3 下线了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-10
  • 2013-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多