varchar型は65535文字格納できます。全角半角問わず65535文字です。
ただし、注意が必要。
この文字数は同じテーブルのvarcharでの合計文字数となります。
以下のエラーが発生します。
1 2 3 4 |
ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs |
このエラー、正確に言うと、「テーブル内のすべてのカラムを結合したサイズが65535行のサイズ表現がある」ということです。
InnoDB では内部的に 65,535 バイトを超える行サイズがサポートされていますが、MySQL 自体では、すべてのカラムを結合したサイズに 65,535 行のサイズ制限が課されています。
参考情報:https://dev.mysql.com/doc/refman/5.6/ja/innodb-restrictions.html
すべてのテーブル (ストレージエンジンには無関係) の最大行サイズは 65,535 バイトです。ストレージエンジンではこの制限に対してさらなる制約を加えられる場合があり、有効な最大行サイズは少なくなります。
参考情報:https://dev.mysql.com/doc/refman/5.6/ja/column-count-limit.html
どのように回避するか。
エラーメッセージにも書かれていますが、text型かBLOB型を使用すれば回避可能です。