結論を言うとMySQLに画像、動画、PDFを保存する時はBLOB型を使用します。
今まで、画像、動画はBLOB型に保存した事はあったのですが、PDFファイルを保存した事がなかったので、ちょっと調べてみました。
その時の情報です。Blob型とTEXT型のどちらに保存すれば良いのか迷っている方はご参考にどうぞ。
BLOB型
BLOB型はバイナリデータを扱うデータ型です。画像、動画、PDFファイルなどを保存する際はこちらの型式を使用します。最大長により以下の型式を変更します。
型 式 | 最大長 | 補 足 |
---|---|---|
TINYBLOB | 255バイト | - |
BLOB(M) | 65,535バイト | この型にはオプションで長さMを指定できます。Mバイトを保持するのに十分な、最小のBLOB型カラムを作成します。 |
MEDIUMBLOB | 16,777,215バイト | - |
LONGBLOB | 4,294,967,295バイト | - |
ちなみに、筆者がよく使うのはMEDIUMBLOBです。このカラムに100KバイトのPDFを保存しても、乱暴に言うと100Kバイトしか使用されません。16Mバイト全部使用される訳ではないのでご心配なく。(細かい事を言うと100Kバイトだけではなくプリフィクスやらなんやらでもう少し大きくなります)
TEXT型
TEXT型は文字列データを扱うデータ型です。以下に記載している各々の型式により保存できる容量がきまっているので、最大長を考慮して、テキストデータを保存しましょう。
型 式 | 最大長 | 補 足 |
---|---|---|
TINYTEXT | 255バイト | ※1 |
TEXT(M) | 65,535バイト | この型にはオプションで長さMを指定できます。Mバイトを保持するのに十分な、最小のBLOB型カラムを作成します。※1 |
MEDIUMTEXT | 16,777,215バイト | ※1 |
LONGTEXT | 4,294,967,295バイト | ※1 |
※1・・・値にマルチバイト文字列が含まれる場合、有効な最大長は少なくなります。