Rails 3 Migration mit Langtext

90

Ich muss einen Spaltentyp in meinem Rails-Skript von Text in Langtext ändern, kann aber nichts dazu finden.

Ist jemand darauf gestoßen?

Vielen Dank! Dennis

dennismonsewicz
quelle
1
(Zumindest für Rails 2 können Sie einfach den Typ angeben: Langtext FWIW)
Rogerdpack

Antworten:

182

Die textGriffe tinytext, text, mediumtext, und longtextfür MySQL, wenn es das ist , was Sie verwenden. Geben Sie einfach die Obergrenze mit an:limit => ...

Beispiel:

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

Der Standardwert von limitist erwartungsgemäß 65535.

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

Die MySQL-Dokumentation finden Sie hier .

Chuck Callebs
quelle
5
Es sollte "4294967295" sein und nicht "4294967296" (dh 4.gigabytes - 1) oder Mysql2::Error: Display width out of range for column ....wird angehoben.
Vikrant Chaudhary
1
Ich habe meine Antwort geändert, um dies widerzuspiegeln. Vielen Dank Vikrant.
Chuck Callebs
4
Auf MySQL 5.1.52 habe ich ein Limit von verwendet 16.megabytes - 1, aber ich habe immer noch einen Langtext, keinen Mediumtext. Irgendeine Idee warum? Vielen Dank.
David M.
1
Dasselbe gilt für mich, obwohl t.text "bla" ,: limit => 16777215 angegeben wird. Der resultierende Spaltentyp ist "longtext".
Martin T.
2
@ChuckCallebs: Könnten wir einen Link zu der PR bekommen, die dieses Problem behoben hat, und in welcher Version von Rails soll es ausgeliefert werden?
Damien Wilson