Rails 3 Міграція з довгим текстом


90

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

Хтось натрапляв на це?

Дякую! Денніс


1
(принаймні для рейок 2, ви можете просто вказати тип: longtext FWIW)
rogerdpack

Відповіді:


182

У 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 ....піднято.
Vikrant Chaudhary

1
Я змінив свою відповідь, щоб відобразити це. Дякую купу Vikrant.
Чак Каллебс

4
У mysql 5.1.52 я використовував обмеження 16.megabytes - 1, але все одно отримав довгий, а не середній текст. Будь-яка ідея чому? Дякую.
Девід М.

1
Те саме для мене, навіть незважаючи на те, що вказуючи t.text "bla",: limit => 16777215, результуючим типом стовпця є "longtext".
Martin T.

2
@ChuckCallebs: Чи можемо ми отримати посилання на PR, який вирішив цю проблему, і в якій версії Rails вона повинна бути надіслана?
Damien Wilson
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.