2011-08-15 29 views
17

Thay vào đó, việc tạo một bảng có cột lớn sẽ tạo cột số nguyên chuẩn. Điều gì có thể xảy ra? Tôi không biết bắt đầu từ đâu.Rails Migration: Bigint trên PostgreSQL có vẻ không thành công?

Tôi đang sử dụng này trong việc di chuyển:

create_table :table_name do |t| 
    t.integer :really_big_int, limit: 8 
end 

Tôi đang sử dụng của Ruby 1.9.2, PostgreSQL 9.0.3 và Rails 3.0.9. Tôi đã bỏ cơ sở dữ liệu và chạy các lần di chuyển nhiều lần và nó vẫn không tạo cột bigint.

+0

Rất lạ. Bạn xác định rằng nó tạo ra một cột số nguyên bằng cách nhìn vào schema.rb hoặc lược đồ PG của bạn như thế nào? –

+0

Tôi đang kiểm tra ở cả hai nơi. Tôi chỉ giải quyết nó bằng cách sử dụng một cột chuỗi, mặc dù tôi vẫn thực sự tò mò muốn biết tại sao nó sẽ không hoạt động. – Lonecat

+1

Bất kỳ cập nhật nào về điều này, có vẻ như: limit => 8 không tạo cột bigint trong Postgres. –

Trả lời

22

Vì lý do nào đó, bảng tạo không thích bigint. Tuy nhiên, bạn có thể làm điều đó với add_columm bằng cách sử dụng loại dữ liệu bigint:

add_column :table_name, :really_big_int, :bigint 

Sau đó, bạn không cần công cụ giới hạn đó.

+1

Sử dụng Rails 3.2.2 và đá quý 'pg' (phiên bản 0.14.0) hoạt động. Chưa kiểm tra các phiên bản cũ hơn. – Lonecat

1

Tôi có thể tạo một bigint bằng cách sử dụng t.column. Điều này rất hữu ích nếu bạn muốn kiểm soát thứ tự cột trong bảng.

create_table :table_name do |t| 
    t.string :other_column 
    t.column :really_big_int, :bigint 
    . 
    . 
    t.timestamps 
end 

Tôi đang sử dụng Rails 3.2.12 với phiên bản đá quý pg 0.15.1 (x86-mingw32).

19

này hoạt động trong Rails 4

t.column :really_big_int, :bigint 
2

Trong ray 4.2 + bạn có thể sử dụng như:

create_table :table_name do |t| 
    t.bigint :really_big_int 
end 
3

Rails 5.0.0.1 hoạt động:

def change 
    create_table :huge do |t| 
     t.integer :big_bastard, limit: 8 
    end 
    end 
Các vấn đề liên quan