レポートを生成するために、正規化されたデータベース構造を一時テーブルにフラット化するエンジニアが何人かいます。列は次のように指定されていますTEXT NOT NULL
(「なぜ彼らはそれをしているのですか?」
Linuxでは、MySQL 5.1.48 Community RHEL5とInnoDBプラグイン1.0.9を使用しています。
MyISAMを使用しているときに、最大列または最大行長のテーブルサイズ制限に遭遇したことはありません(調査中に、2598で最大列制限に達しました(2599番目がエラー1117の原因になります)。InnoDBでは制限に達しています。これらの制限は、テーブル(データ挿入なし)として:
エラー1118(42000)1行目:行サイズが大きすぎます。使用されるテーブルタイプの最大行サイズはBLOBを含まない8126です。一部の列をTEXTまたはBLOBに変更する必要があります
以下に対する答えを探しています。
ロットのv / v / b / t列を使用する場合に、行サイズを特定するための詳細な式は何ですか?
varchar(N)
列(Nは1から512の間)、UTF8文字セット(* 3)、および失敗するまでテーブルに必要な数の列を使用して、いくつかの異なる形式を試しました。私が試したコンボはどれも、実際のテスト結果と一致する値を示していません。行サイズを計算するときに、他にどのような「オーバーヘッド」を考慮する必要がありますか?
varchar(109)列を持つテーブルの作成からvarchar(110)列に変更すると、エラーメッセージが8126から65535に変わるのはなぜですか?