MySQL テーブル varchar 最大値(max length)を確認

Pocket

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文字 で テーブル作成 成功しました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


2022 MJELD TECHNOLOGIES. ALL RIGHTS RESERVED