2011-08-15 12 views
17

Próba utworzenia tabeli z kolumną bigint tworzy zamiast niej standardową kolumnę całkowitą. Co może być nie tak? Nie wiem, gdzie zacząć szukać.Rails Migration: Bigint na PostgreSQL prawdopodobnie nie działa?

używam tego w migracji:

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

Używam Ruby 1.9.2, PostgreSQL 9.0.3 i Rails 3.0.9. Zrzuciłem bazę danych i przeprowadziłem kilka migracji, ale nadal nie tworzy ona kolumny bigint.

+0

bardzo dziwne. W jaki sposób określasz, że tworzy on kolumnę całkowitą - patrząc na schemat sc.mb lub schemat PG? –

+0

Sprawdzam oba miejsca. Właśnie rozwiązałem go za pomocą kolumny z ciągiem znaków, chociaż wciąż jestem ciekawy, dlaczego to nie zadziała. – Lonecat

+1

Wszelkie aktualizacje na ten temat, wydaje się, że: limit => 8 nie tworzy kolumny bigint w Postgres. –

Odpowiedz

22

Z jakiegoś powodu tabela tworzenie nie lubi bigint. Możesz jednak zrobić to za pomocą add_columm używając danych typu bigint:

add_column :table_name, :really_big_int, :bigint 

Wtedy nie potrzebujesz tego limitu.

+1

Używanie Rails 3.2.2 i gem 'pg' (wersja 0.14.0) działa. Nie sprawdzałem starszych wersji. – Lonecat

1

Udało mi się stworzyć biginta używając t.column. Jest to przydatne, jeśli chcesz kontrolować kolejność kolumn w tabeli.

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

Używam Rails 3.2.12 z pg gem version 0.15.1 (x86-mingw32).

19

Działa to w Rails 4

t.column :really_big_int, :bigint 
2

w Rails 4.2 + można używać jak:

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

Szyny 5.0.0.1 to działa:

def change 
    create_table :huge do |t| 
     t.integer :big_bastard, limit: 8 
    end 
    end 
Powiązane problemy