環境
- MySQL 5.7.30
原因
MySQLのTEXT
型の最大長は65,535(約6万)文字とのこと。
また、以下のように記載されているので、マルチバイトの場合は複数文字としてカウントされるようである。
値にマルチバイト文字が含まれる場合、有効な最大長は少なくなります。各 TEXT 値は、値のバイト数を示す 2 バイト長のプリフィクスを使用して格納されます。
※ 以下、公式ドキュメント。
dev.mysql.com
今回、保存しようとしたHTMLコンテンツのバイト数を確認したところ、約19万バイトあったので、確かにTEXT
型の最大長を超過していた。
$ wc -c result.html 189956 result.html $
対応方法
LONGTEXT
型を使用する。
LONGTEXT
型であれば、4,294,967,295(約40億)文字まで保存可能とのこと。
※ マルチバイトの場合は複数文字としてカウントされるという仕様は同じ。
参考
以下の記事を参考にさせて頂いた。
qiita.com