Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rails 4 JSON attribute type not working with Postgres

I forked a repo from someone I'm collaborating with, and I'm just trying to get my development environment up and running. One of the migrations has a json attribute and we're using Postgres for both dev and production:

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

database.yml

development:
  adapter: postgresql
  database: examgen_development
  host: localhost

When I run the rake db:migrate, I get an error that would lead me to believe that PG doesn't support JSON column types:

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

But I know Postgres 9.2 supports JSON (i.e. http://www.postgresql.org/docs/devel/static/datatype-json.html).

Interestingly, when I check the version of PG I'm using with 'psql' it shows 9.0.4. Whereas when I use 'postgres' it shows 9.2.1. So I'm not exactly sure what version I'm using and how to go about switching back and forth.

psql --version
psql (PostgreSQL) 9.0.4

postgres --version
postgres (PostgreSQL) 9.2.1

Does anyone have thoughts as to why I'm getting that Postgres error?

like image 929
dougiebuckets Avatar asked Jul 26 '13 19:07

dougiebuckets


1 Answers

OK, so it turns out at one point I had installed postgres via homebrew, and had also done so with Postgres.app at a different time. I began to realize this by checking the version of 'psql' and 'postgres' and noticed the distinction.

psql --version
psql (PostgreSQL) 9.0.4

postgres --version
postgres (PostgreSQL) 9.2.4

I uninstalled Postgres.app using their documentation here and then using homebrew ensured I was using the most recent version of postgres.

like image 102
dougiebuckets Avatar answered Oct 23 '22 15:10

dougiebuckets