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

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

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

C# 配列 ⇔ Listへ変換

C# 配列 ⇔ Listへ変換

List<T>から配列や その逆 変換する方法

配列 → List<T>に 変換

変換というよりは List<T>を新たに作成し AddRange()します。

int[] iArray = new int[]{1,2,3}; // int配列

List<int> iList = new List<int>(); //新たにListを作る
iList.AddRange(iArray);
foreach(var i in iList)
    Console.WriteLine(i);

List<T> → 配列 に 変換

Listから配列に変換の場合 ToArray()を使います。

List<int> iList = new List<int>(){1,2,3}; // Listを作る
int[] iArray = iList.ToArray(); //ToArrayで配列に変換
foreach(var i in iArray)
    Console.WriteLine(i);
2022 MJELD TECHNOLOGIES. ALL RIGHTS RESERVED