Миграция на Rails 3 с длинным текстом


91

Мне нужно изменить тип столбца с текстового на длинный текст в моем сценарии Rails, но я не могу найти ничего о том, как это сделать.

Кто-нибудь сталкивался с этим?

Благодарность! Деннис


1
(по крайней мере, для rails 2 вы можете просто указать type: longtext FWIW)
rogerdpack

Ответы:


183

В textручках типа tinytext, text, mediumtextи longtextдля MySQL, если это то, что вы используете. Просто укажите верхнюю границу, используя:limit => ...

Пример:

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

Как limitи ожидалось, значение по умолчанию - 65535.

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

Документацию по MySQL можно найти здесь .


5
Это должно быть «4294967295», а не «4294967296» (т. Е. 4.gigabytes - 1), Иначе оно Mysql2::Error: Display width out of range for column ....будет повышено.
Викрант Чаудхари

1
Я изменил свой ответ, чтобы отразить это. Спасибо большое, Викрант.
Чак Каллебс,

4
В mysql 5.1.52 я использовал предел 16.megabytes - 1, но у меня все еще был длинный текст, а не средний текст. Есть идеи, почему? Спасибо.
Дэвид М.

1
То же самое для меня, даже если указать t.text «bla»,: limit => 16777215, результирующий тип столбца - «longtext».
Мартин Т.

2
@ChuckCallebs: Можно ли получить ссылку на PR, который исправил эту проблему, и в какую версию Rails она должна быть отправлена?
Дэмиен Уилсон
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.