4liberty-image

こんにちわanです。

かなりご無沙汰な投稿となってしまいました。

実は別でブログをはじめてそこに注力していました。

で、結局楽なので新しいブログもはてなブログですが、

エンジニアとしてそれってどうなの?と思った次第です。

それでは本題へ。

Sponsored Link - Powered by Google.

MySQL × Rails で長い文字列を保存したい

はてなをやめて独自に作る or WordPressに移行するなら、DB管理もしないといけません。そう思うと次の疑問が浮かびました。

  • 記事ってどんな形式で保存するんだろ?
  • 長い文字列だからTEXT?
  • それでも危ういんじゃない?

とあんの頭の中では”???”が。なので気になって調べたのでその備忘録です。

Railsでテーブルを作る

rails g コマンドを使用します。

以前まとめているのでこちらの記事を参考に。

www.4liberty.xyz

 MySQLにあるデータ型

MySQLには以下の文字列型が存在するようだ。

データ型 解説
CHAR 255Bまでの固定長文字列
VARCHAR 64KBまでの可変長文字列
TINYTEXT 255Bまでの可変長文字列
TEXT 64KBまでの可変長文字列
MEDIUMTEXT 1.6MBまでの可変長文字列
LONGTEXT 4.3GBまでの可変長文字列

ほうほう、

LONGTEXT

なるものにすれば間違いなく問題なし。

1記事4.3GBとか不可能ですからね。

ただRailsでこんなの指定できんの?見たことないっぺ。

Sponsored Link - Powered by Google.

Railsで長い文字列データ型を作成する

Rails で長い文字列カラムを作る方法を説明します。

とりあえずテーブル作る

こんな感じです。ちなみにRailsで指定できるデータ型は以下。

  • string : 文字列
  • text : 長い文字列
  • integer : 整数
  • float : 浮動小数
  • decimal : 精度の高い小数
  • datetime : 日時
  • timestamp : タイムスタンプ
  • time : 時間
  • date : 日付
  • binary : バイナリデータ
  • boolean : Boolean

あら?あらららら?

LONGTEXTとか指定できないっぺよ!!

と一見なる。

だから私も見たことがないと思ったわけだ。

とりあえず長い文字列なので”text型”でカラムを作りましょう。

この状態で動かすとこんな感じ。”test_column”には64kbの文字列が入れれます。

4liberty-image

 TEXT型をLONGTEXT型に変える

方法はなんとリミットを付けるだけです。これは驚いた。と、言いたいところですがBooleanとかと仕組みは一緒だったんですよね。

これでmigrateすると…、

4liberty-image

 WOW!!FANTASTIC!!

でLONGTEXTに代わりましたとさ。

ちなみに4294967295と言う数字は

4294967295バイト(4.3GB)でLONGTEXT型の上限です。

このようにリミットに指定したバイト数でRailsがよしなにデータ型を変えてくれる。

Sponsored Link

Railsで指定したテキスト型カラムのリミット数とデータ型の対応表

リミットバイト数と対応するデータ型は以下です。

データ型 Limitバイト数
TINYTEXT 1 ~ 255
TEXT 指定なし or 256 ~ 65535
MEDIUMTEXT 65536 ~ 16777215
LONGTEXT 16777216 ~ 4294967295

 まとめ

なるほどでした。

こんな感じにタグごと保存して記事をhtmlで表示すればブログに活用できちゃうんですね。いや、勉強になりました。

Sponsored Link - Powered by Google.

コメントを残す

メールアドレスが公開されることはありません。