Czy poniższe informacje są prawidłowe?W migracji railsów, w jaki sposób można usunąć limit pola
change_column :tablename, :fieldname, :limit => null
Czy poniższe informacje są prawidłowe?W migracji railsów, w jaki sposób można usunąć limit pola
change_column :tablename, :fieldname, :limit => null
Jeśli wcześniej określony limit w migracji i chcą po prostu usunąć limit, można po prostu to zrobić:
change_column :users, :column, :string, :limit => 255
255 jest standardową długością kolumny z ciągami, a szyny po prostu zmywają określony wcześniej limit.
Aktualizacja:
Chociaż to działa w wielu wersjach Rails, prawdopodobnie być lepiej przystosowane do wykorzystania w odpowiedzi nil
jak Giuseppe.
change_column :users, :column, :string, :limit => nil
Oznacza to, że jedyną rzeczą, którą robią źle używał null
zamiast nil
.
Struny bez limitu nie jest czymś wsparcie Większość baz danych: trzeba podać rozmiar w varchar(SIZE)
definicji.
Chociaż możesz spróbować, osobiście wybrałbym numer :limit => BIG_ENOUGH_NUMBER
. Możesz także rozważyć użycie typu CLOB dla bardzo dużych tekstów.
Aby to DB-kierowca niezależny jeden powinien napisać smth takiego:
add_column :tablename, :fieldname_tmp, :text
Tablename.reset_column_information
Tablename.update_all("fieldname_tmp = fieldname")
remove_column :tablename, :fieldname
rename_column :tablename, :fieldname_tmp, :fieldname
Zmień typ kolumny na :text
. Nie ma limitu.
change_column :tablename, :fieldname, :text, :limit => nil
Oto co mi się przydarzyło.
zdałem sobie sprawę, że pole ciąg miałem na stole nie było wystarczające, aby utrzymać jego zawartość, więc generowane migrację który zawierał:
def self.up
change_column :articles, :author_list, :text
end
Po przeprowadzeniu migracji, jednak schemat miał:
create_table "articles", :force => true do |t|
t.string "title"
t.text "author_list", :limit => 255
end
Co nie było w porządku. Więc ja "redid" migrację następująco:
def self.up
# careful, it's "nil", not "null"
change_column :articles, :author_list, :text, :limit => nil
end
Tym razem granica zniknęła w schema.rb:
create_table "articles", :force => true do |t|
t.string "title"
t.text "author_list"
end
Dla mnie potrzebowałem prowizji db: migrate: reset aby naprawdę zmienić limit i należy uważać na to polecenie, ponieważ powoduje to upuszczenie bazy danych. – p1100i
I była taka sama łódź dziś, starając się usunąć limit I 'd został dodany do pola tekstowego i nie zająłby. Próbowałem kilku migracji.
Szyny 4.2.7.1 Ruby 2.3.1p112
W końcu jedyną rzeczą, która pracowała była określając limit 255. Próbując dopasować do niczego innego nie będzie działać dla mnie.
To jest nieprawidłowe ...jeśli po prostu zmienisz z: string na: text, rake db: migrate pozostawi limit w miejscu, co zepsuje sytuację, gdy spróbujesz zrobić rake w prowizji heroku: schemat: load – jpwynn