2014-07-06 22 views
9

Gần đây tôi đã nhân bản một dự án vào hộp Ubuntu cục bộ của mình, và khi di chuyển db rake, tôi nhận được lỗi sau:Lỗi - gõ "json" không tồn tại - trong Postgresql trong khi rake db di chuyển

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

Một vài cột trong bảng của tôi đó là:

add_column :table, :column, :json 

di cư này hoạt động trên các máy Mac tại nơi làm việc, nhưng không làm việc ở đây. Tôi đã thử nâng cấp lên PostgreSQL 9.3.4, nhưng vấn đề vẫn tồn tại. Tôi cũng đã thử sudo apt-get nâng cấp postgresql, và vẫn còn vấn đề vẫn tồn tại.

phiên bản Ruby 2.1.0 Rails phiên bản 4.0.3

+0

bạn đã thấy điều này: http://stackoverflow.com/questions/23284164/rails-3-migration-error-when-using-json-as-a-column-type-in-an-activerecord-bac – xlembouras

+0

Nhưng giải pháp từ vấn đề đó là làm thế nào tôi có lược đồ hiện được thiết lập. Tôi cũng đã thử sửa đổi application.rb như được hiển thị trong câu trả lời không có kết quả. – earth2jason

+2

Kiểu dữ liệu 'json' được giới thiệu với Postgres 9.2. Nó chắc chắn sẽ hoạt động với v9.3.1. Bạn không tiết lộ phiên bản * thực tế * của cụm db Postgres mà bạn đang kết nối tới. Bạn nhận được gì cho 'phiên bản SELECT()'? –

Trả lời

19

I have tried upgrading to PostgreSQL 9.3.4, but the issue still persists

Nhiều khả năng bạn vẫn đang kết nối với phiên bản cũ. Hãy thử SELECT version().

Vì bạn đề cập đến apt-get, bạn có lẽ là trên Debian hoặc Ubuntu. Chúng sử dụng pg_wrapper để cho phép nhiều cài đặt PostgreSQL song song. Mỗi người nhận được một số cổng khác nhau. Cài đặt đầu tiên nhận được cổng mặc định 5432. Các cài đặt tiếp theo sẽ nhận được các cổng cao hơn.

Bạn có thể xem lượt cài đặt với pg_lsclusters. Rất có thể cài đặt 9.3 của bạn là trên cổng 9433 và bạn cần thay đổi database.yml (vì bạn đang sử dụng Rails) để kết nối với cổng đó.

+1

Thực ra, điều này đã giúp tôi hiểu rằng 9.1 đã trực tuyến chứ không phải 9.3. 9.3 đã giảm. – earth2jason

5

Nếu vì bất kỳ lý do nào bạn gặp sự cố này, phiên bản 9.3 của bạn không thực sự chạy.

Tôi thấy liên kết này để rất hữu ích:

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

tôi bắt đầu bằng lệnh:

sudo service postgresql stop 

và chạy tất cả các lệnh từ đó. Tất cả mọi thứ hoạt động tốt ngay bây giờ.

+0

Dành cho ubuntu 12.04 LTS - https://gist.github.com/mdpatrick/8895813 để nâng cấp từ 9,1 lên 9,3 – poorva

Các vấn đề liên quan