Rails 3 Migration with longtext


90

Ho bisogno di cambiare un tipo di colonna da testo a testo lungo nel mio script Rails, ma non riesco a trovare nulla su come farlo.

Qualcuno si è imbattuto in questo?

Grazie! Dennis


1
(per rails 2 almeno, puoi semplicemente specificare il tipo: longtext FWIW)
rogerdpack

Risposte:


182

I texttipo maniglie tinytext, text, mediumtext, e longtextper MySQL, se è questo che si sta utilizzando. Basta specificare il limite superiore utilizzando:limit => ...

Esempio:

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

Il valore predefinito di limitè 65535, come previsto.

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

La documentazione di MySQL può essere trovata qui .


5
Dovrebbe essere "4294967295" e non "4294967296" (cioè 4.gigabytes - 1) , altrimenti Mysql2::Error: Display width out of range for column ....viene sollevato.
Vikrant Chaudhary

1
Ho modificato la mia risposta per riflettere questo. Grazie mille Vikrant.
Chuck Callebs

4
Su mysql 5.1.52 ho usato un limite di 16.megabytes - 1, ma ho ancora un testo lungo, non un testo medio. Qualche idea sul perché? Grazie.
David M.

1
Lo stesso per me, anche se specificando t.text "bla",: limit => 16777215, il tipo di colonna risultante è "longtext".
Martin T.

2
@ChuckCallebs: Potremmo ottenere un collegamento al PR che ha risolto il problema e in quale versione di Rails dovrebbe essere spedito?
Damien Wilson,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.