Migração do Rails 3 com texto longo


90

Estou precisando mudar um tipo de coluna de texto para texto longo no meu script Rails, mas não consigo encontrar nada sobre como fazer isso.

Alguém encontrou isso?

Obrigado! Dennis


1
(para trilhos 2 pelo menos, você pode apenas especificar o tipo: longtext FWIW)
rogerdpack

Respostas:


182

Os texttipo alças tinytext, text, mediumtext, elongtext para o MySQL, se é isso que você está usando. Basta especificar o limite superior usando:limit => ...

Exemplo:

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

O valor padrão limité 65535, conforme esperado.

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

A documentação do MySQL pode ser encontrada aqui .


5
Deve ser "4294967295" e não "4294967296" (ou seja, 4.gigabytes - 1) ou Mysql2::Error: Display width out of range for column ....será gerado.
Vikrant Chaudhary

1
Modifiquei minha resposta para refletir isso. Muito obrigado, Vikrant.
Chuck Callebs

4
No mysql 5.1.52 usei um limite de 16.megabytes - 1, mas ainda obtive um texto longo, não um texto médio. Alguma ideia do porquê? Obrigado.
David M.

1
O mesmo para mim, embora especificando t.text "bla",: limit => 16777215, o tipo de coluna resultante é "longtext".
Martin T.

2
@ChuckCallebs: Podemos obter um link para o PR que corrigiu esse problema e em qual versão do Rails ele deve ser enviado?
Damien Wilson
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.