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


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 .


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.