2011-08-15 10 views
17

bigint列を持つテーブルを作成しようとすると、代わりに標準の整数列が作成されます。何がうまくいかないでしょうか?私はどこから探し始めるべきかわかりません。Railsの移行:PostgreSQLのBigintが失敗しているようですか?

私は、マイグレーションでこれを使用しています:

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

私はRubyの1.9.2、PostgreSQLの9.0.3とRails 3.0.9を使用しています。私はデータベースを削除して、移行を数回実行しましたが、それでもbigint列は作成されません。

+0

非常に奇妙な。 schema.rbやPGスキーマを見て、どのように整数列を作成すると決めていますか? –

+0

私は両方の場所をチェックしています。文字列を使って解決しましたが、なぜそれがうまくいかないのか不思議です。 – Lonecat

+1

これについての更新は、次のように思われます:limit => 8はPostgresにbigintカラムを作成していません。 –

答えて

22

何らかの理由で、create tableに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 

私は、PG宝石のバージョン0.15.1(x86ベースMINGW32)でのRails 3.2.12を使用しています。

19

これはRailsの4あなたのような使用することができ、レール4.2 +で

t.column :really_big_int, :bigint 
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 
関連する問題