Ответ 1
Я не знаю, поддерживались ли рельсы: longtext официально в предыдущих версиях, но в текущей версии в соответствии с рельсовая документация: longtext is фактически не указывается как юридический тип данных. Я думаю, что это только удобство адаптера mysql, которое переводит это на: текст.
Правильный способ сделать это:
change_column: contents,: description,: text,: limit = > 4294967295
Имейте в виду, что эффективный максимальный размер меньше при использовании многобайтовых символов.
Изменить: Думать секунду об этом, и имеет смысл, что рельсы уменьшают размер. Перечитав mysql docs на эту тему, они говорят об эффективном размере. Я предполагаю, что определение 2147483647 может привести к эффективному размеру 4294967295 при заполнении 2-байтовыми символами UTF-8. Поскольку UTF-8 является кодировкой по умолчанию в ruby 1.9 (по крайней мере, на моей машине), это единственный правильный способ сделать это. Я думаю?!
ruby-1.9.2-p136 :002 > "".encoding
=> #<Encoding:UTF-8>