MySQLのテキスト型(TEXT)は無限ではないんです

MySQL MySQL

MySQLのデータベースの型を決める際に、長い文字列だから「テキスト型」にしよう。と安易に決めていたりはしませんか? たいていの場合はそれでも問題ないかもしれませんが、MySQLの「テキスト型」にも最大長はあり無限というわけではないので、テーブル設計の際は注意しておくようにしましょう。

テキスト型は「65,535バイト」

では、MySQLのテキスト型の最大長がいくつなのかというと「65,535バイト」となっています。なので「半角だと65,535字」「全角だと半分の32,767字」ということになります。 ※UTF-8の場合は1字が最大3バイトなので最小で21,845字。

最大長が 65,535 (216 − 1) 文字の TEXT カラム。値にマルチバイト文字が含まれる場合、有効な最大長は少なくなります。各 TEXT 値は、値のバイト数を示す 2 バイト長のプリフィクスを使用して格納されます。

MySQL 5.6 リファレンスマニュアル

なので、最大長のことを考えずに安易に「テキスト型」にしてしまうと、データが正常に登録できなかったり、一部のデータが切り落とされていた。という事象が発生してしまうので、登録するカラムが「テキスト型 」だったとしても、バリデーションチェックでサイズ確認は行い「65,535バイト」を超えているようならアラートを出すなどで対策をしておきましょう。

それではみなさん、自由なWEBライフをお過ごしください!

タイトルとURLをコピーしました