MySQL で テーブルを作成 varchar length size 大きすぎると
下記のメッセージが 出る場合があります。
> create table test_table(s varchar(99999)); ERROR 1074 (42000): Column length too big for column 's' (max = 16383); use BLOB or TEXT instead
エラーを確認すると わたしの環境では 16383 が最大のようでした。
> create table test_table(s varchar(16383));
↑ varchar の長さを 16383に変更した 上記 SQL では テーブル作成が 成功しました
テーブルのカラムを 「s1, s2」2つ同じvarchar 16383にして実行すると↓
> create table test_table(s1 varchar(16383), s2 varchar(16383)); 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
上記のエラーが出ました。翻訳してみると
エラー 1118 (42000): 行サイズが大きすぎます。
使用されるテーブル タイプの最大行サイズ (BLOB をカウントしない) は 65535 です。
これには ストレージの オーバーヘッドが含まれます。 マニュアルを確認してください。
いくつかの列を TEXT または BLOB に変更する必要があります
テーブルの最大長が 65535 (16ビット) ということでした
ということは varchar(1) = 4Byte確保しているということですね
> create table test_table(s1 varchar(8191), s2 varchar(8191));
「s1, s2」の2つvarchar最大の場合 8191文字 で テーブル作成 成功しました。