我们有一些工程师将标准化的db结构展平为临时表,以生成报告。列指定为TEXT NOT NULL
(我知道“他们为什么这样做?”;让我们假设我们正在解决此问题)。
我们在Linux上使用带有InnoDB插件1.0.9的MySQL 5.1.48 Community RHEL5。
使用MyISAM时,我们从未遇到最大列或最大行长度的表大小限制(在调查过程中,我们达到了最大列限制为2598(第2599个原因导致错误1117)。使用InnoDB时,我们达到了限制。表(无数据插入)为:
第1行的错误1118(42000):行大小太大。使用的表类型的最大行大小(不计BLOB)为8126。您必须将某些列更改为TEXT或BLOB
我正在寻找以下问题的答案:
使用很多v / v / b / t列时确定行大小特殊性的详细公式是什么?我已经尝试过使用
varchar(N)
列(其中N在1到512之间),UTF8字符集(* 3)和表将使用的列数直到失败为止的几种不同形式形式。我尝试过的所有组合都不提供与实际测试结果匹配的值。计算行大小时,我还必须考虑其他哪些“开销”?
当我从使用varchar(109)列创建表到varchar(110)列时,为什么错误消息从8126变为65535?