Migracja Rails 3 z długim tekstem

91

Potrzebuję zmienić typ kolumny z tekstu na długi tekst w moim skrypcie Rails, ale nie mogę znaleźć nic o tym, jak to zrobić.

Czy ktoś to spotkał?

Dzięki! Dennis

dennismonsewicz
źródło
1
(przynajmniej dla szyn 2 możesz po prostu podać typ: longtext FWIW)
rogerdpack

Odpowiedzi:

183

Te textuchwyty typu tinytext, text, mediumtext, i longtextdla MySQL, jeśli to, co używasz. Po prostu określ górną granicę za pomocą:limit => ...

Przykład:

change_column :articles, :body, :text, :limit => 4294967295

Zgodnie z oczekiwaniami, domyślna wartość limitto 65535.

1 to 255 bytes: TINYTEXT
256 to 65535 bytes: TEXT
65536 to 16777215 bytes: MEDIUMTEXT
16777216 to 4294967295 bytes: LONGTEXT

Dokumentację MySQL można znaleźć tutaj .

Chuck Callebs
źródło
5
Powinien być „4294967295”, a nie „4294967296” (tj. 4.gigabytes - 1), W przeciwnym razie Mysql2::Error: Display width out of range for column ....zostanie podniesiony.
Vikrant Chaudhary
1
Zmodyfikowałem odpowiedź, aby to odzwierciedlić. Wielkie dzięki Vikrant.
Chuck Callebs
4
W mysql 5.1.52 użyłem limitu 16.megabytes - 1, ale nadal otrzymałem długi tekst, a nie średni tekst. Każdy pomysł, dlaczego? Dzięki.
David M.
1
To samo dotyczy mnie, mimo że podając t.text "bla",: limit => 16777215, wynikowy typ kolumny to "longtext".
Martin T.
2
@ChuckCallebs: Czy możemy uzyskać link do PR, który naprawił ten problem i w jakiej wersji Railsów ma on zostać wysłany?
Damien Wilson