6

我从与我合作的人那里分叉了一个 repo,我只是想让我的开发环境启动并运行。其中一个迁移有一个json属性,我们将 Postgres 用于开发和生产:

class CreateExams < ActiveRecord::Migration
  def change
    create_table :exams do |t|
      t.belongs_to :user
      t.json :exam
      t.timestamps
    end
  end
end

数据库.yml

development:
  adapter: postgresql
  database: examgen_development
  host: localhost

当我运行时rake db:migrate,我得到一个错误,让我相信 PG 不支持 JSON 列类型:

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

但我知道 Postgres 9.2 支持 JSON(即http://www.postgresql.org/docs/devel/static/datatype-json.html)。

有趣的是,当我检查使用“psql”的 PG 版本时,它显示 9.0.4。而当我使用“postgres”时,它显示 9.2.1。所以我不确定我使用的是什么版本以及如何来回切换。

psql --version
psql (PostgreSQL) 9.0.4

postgres --version
postgres (PostgreSQL) 9.2.1

有人对我为什么会收到 Postgres 错误有任何想法吗?

4

1 回答 1

7

好的,事实证明我曾经通过自制软件安装了 postgres,并且在不同的时间也使用 Postgres.app 安装了。我通过检查“psql”和“postgres”的版本开始意识到这一点,并注意到了区别。

psql --version
psql (PostgreSQL) 9.0.4

postgres --version
postgres (PostgreSQL) 9.2.4

我在这里使用他们的文档卸载了 Postgres.app ,然后使用自制软件确保我使用的是最新版本的 postgres。

于 2013-07-28T17:17:12.717 回答