2011-07-26 15 views
15

私は長いテキストを(私の場合は生のRSSフィードを保存しようとしていますが、ちょうど長いブログ投稿や同様のものでもよい)MySqlデータベースに保存しようとしています。Railsを使って長いテキストをMySql DBに保存する方法は?

私はとの移行があります。

change_column :contents, :description, :longtext 

をしかし、これはとschema.rbを与える:制限は実際には4294967295

なぜに設定されている必要があります

t.text  "description",  :limit => 2147483647 

Railsは可能なはずの半分の上限を課していますか?

答えて

15

レールがサポートされているかどうかわかりません:以前のバージョンでは正式にlongtextでしたが、現在のバージョンではrails documentationによると:longtextは実際には法的なデータ型として指定されていません。私はこれをmysqlアダプタの便利な唯一のものと考えています:これをテキストに変換します。

それを行うための正しい方法は次のようになります。

change_column:内容:説明、:テキスト、:制限=> 4294967295

がマルチを使用するときに効果的な最大サイズが小さいことを気にしておいてくださいバイト文字。

編集:これについてもう一度考えると、レールがサイズを半分にすることは意味があります。このトピックのmysql docsを再読し、彼らは有効サイズの話します。私は2147483647を指定すると、2バイトのUTF-8文字で埋め尽くされると4294967295の有効サイズにつながると思います。 UTF-8は、少なくとも私のマシンではRuby 1.9のデフォルトのエンコーディングであるため、唯一正しい方法です。おもう?!

ruby-1.9.2-p136 :002 > "".encoding 
=> #<Encoding:UTF-8> 
+0

ありがとうございました!あなたが効果的なサイズとレールについて語ったのは、utf-8のデフォルトのエンコーディングです。 – Magne

関連する問題