ロングテキストによるRails 3の移行


90

Railsスクリプトで列タイプをテキストからロングテキストに変更する必要がありますが、これを行う方法について何も見つかりません。

誰かがこれに遭遇しましたか?

ありがとう!デニス


1
(少なくともレール2の場合、タイプ:longtext FWIWを指定するだけです)
rogerdpack '21年

回答:


182

text型ハンドルtinytexttextmediumtext、およびlongtextMySQLのための、それはあなたが使用しているものだ場合。使用して上限を指定するだけです:limit => ...

例:

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

のデフォルト値limitは、予想どおり65535です。

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

MySQLのドキュメントはここにあります


5
「4294967295」ではなく「4294967295」である4.gigabytes - 1必要がMysql2::Error: Display width out of range for column ....あります。そうでない場合は発生します。
Vikrant Chaudhary、2011

1
私はそれを反映するように私の答えを修正しました。たくさんのVikrantに感謝します。
チャックカレブ

4
mysql 5.1.52では、制限を使用しました 16.megabytes - 1が、それでも中程度のテキストではなく、長いテキストを取得しました。なぜだろう?ありがとう。
David M.

1
t.text "bla"、:limit => 16777215と指定しても、結果の列タイプは "longtext"です。
マーティンT.

2
@ChuckCallebs:この問題を修正したPRへのリンクと、それが出荷されるはずのRailsのバージョンを教えてください。
Damien Wilson、
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.