2011-08-15 57 views
17

嘗試使用bigint列創建表,而是創建一個標準整數列。可能會出現什麼問題?我不知道從哪裏開始尋找。Rails遷移:PostgreSQL上的Bigint似乎失敗了?

我在遷移使用此:

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

我使用Ruby 1.9.2,9.0.3的PostgreSQL和Rails 3.0.9。我放棄了數據庫並多次運行遷移,但仍未創建bigint列。

+0

很奇怪。你如何確定它創建一個整數列 - 通過查看schema.rb或PG模式? –

+0

我正在檢查這兩個地方。我剛剛使用字符串列來解決它,但我仍然很想知道爲什麼它不起作用。 – Lonecat

+1

對此的任何更新,似乎是:limit => 8不會在Postgres中創建bigint列。 –

回答

22

出於某種原因,創建表不喜歡bigint。但是,您可以使用bigint數據類型使用add_columm:

add_column :table_name, :really_big_int, :bigint 

然後您不需要限制的東西。

+1

使用Rails 3.2.2和'pg' gem(版本0.14.0)可以工作。尚未檢入舊版本。 – Lonecat

1

我能夠使用t.column創建bigint。如果您想控制表格中的列順序,這很有用。

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

我使用Rails 3.2.12與pg gem版本0.15.1(x86-mingw32)。

19

這個工作在軌道4,5

t.column :really_big_int, :bigint 
2

在Rails 4.2 +你可以使用這樣的:

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

Rails的5.0.0.1它的工作原理:

def change 
    create_table :huge do |t| 
     t.integer :big_bastard, limit: 8 
    end 
    end