Migración de Rails 3 con texto largo

90

Necesito cambiar un tipo de columna de texto a texto largo en mi secuencia de comandos de Rails, pero no puedo encontrar nada sobre cómo hacerlo.

¿Alguien se ha encontrado con esto?

¡Gracias! Dennis

dennismonsewicz
fuente
1
(para rieles 2 al menos, puede especificar el tipo: texto largo FWIW)
rogerdpack

Respuestas:

182

Las textmanijas tipo tinytext, text, mediumtexty longtextpara MySQL, si eso es lo que está utilizando. Simplemente especifique el límite superior usando:limit => ...

Ejemplo:

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

El valor predeterminado de limites 65535, como se esperaba.

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

La documentación de MySQL se puede encontrar aquí .

Chuck Callebs
fuente
5
Debe ser "4294967295" y no "4294967296" (es decir, 4.gigabytes - 1) o Mysql2::Error: Display width out of range for column ....se eleva.
Vikrant Chaudhary
1
Modifiqué mi respuesta para reflejar eso. Muchas gracias Vikrant.
Chuck Callebs
4
En mysql 5.1.52 utilicé un límite de 16.megabytes - 1, pero todavía tengo un texto largo, no un texto medio. ¿Alguna idea de por qué? Gracias.
David M.
1
Lo mismo para mí, aunque especificando t.text "bla",: limit => 16777215, el tipo de columna resultante es "longtext".
Martin T.
2
@ChuckCallebs: ¿Podríamos obtener un enlace al PR que solucionó este problema y en qué versión de Rails se supone que se enviará?
Damien Wilson