psql --version
psql (PostgreSQL) 9.4.1

rails -v
Rails 4.2.0

我通过这样的迁移添加了一个jsonb列

class AddPreferencesToUsers < ActiveRecord::Migration
  def change
    add_column :users, :preferences, :jsonb, null: false, default: '{}'
    add_index :users, :preferences, using: :gin
  end
end

我得到了这个错误:

PG::UndefinedObject: ERROR:  type "jsonb" does not exist
LINE 1: SELECT 'jsonb'::regtype::oid

有什么帮助吗?

推荐答案

环顾四周后,通过运行正确的命令,我发现我的postgresql版本不是9.4

postgres=# SHOW SERVER_VERSION;
server_version 
----------------
9.1

所以我只需将我的postgresql升级到9.4.

顺便说一句,我按照this article做了升级,我觉得非常方便.

现在:

postgres=# SHOW SERVER_VERSION;
 server_version 
----------------
 9.4.1

希望这能帮助处于同样情况的人.

Ruby-on-rails相关问答推荐

如何断言 Ruby 单元测试中的错误消息?

使用嵌套属性时如何自动将父 ID 分配为外键?

为什么 Image_tag 产生images/...而不是assets/....?

如何使用 Rails 3 / Rack 在没有 www 的情况下重定向?

Rails 是否带有未授权异常?

Ruby/Rails 中的类方法与常量

在 Rails 的 ActiveRecord 中,touch 有什么用?

如何将 Ruby 哈希转换为 XML?

如何在rails中发回js.haml

Ruby 元素是否存在于数组中

Rails 3:验证组合值

如何在我的 Gemfile 中找到未使用的Ruby

使用 oauth 和 twitter ruby​​ gem 时不断收到 OAuth::Unauthorized 错误

Rails:如何在表单的必填字段上禁用星号?

rmagick 和 OS X Lion

强参数需要多个

向 Rails 模型添加外键

如何为 Rails 迁移定义布尔字段

Rails:弃用警告:您没有设置 config.secret_key_base

Rails:在 link_to 中保留 GET 查询字符串参数