我有一个包含 1699 列的表,当我尝试插入更多列时,我得到了,
错误代码:1117。列太多
在这个表中,我只有 1000 行。对我来说,最重要的是列数。桌子上有什么限制吗?我想创建 2000 列。那可能吗?
为了生成报告,我们有一些工程师将规范化的数据库结构展平到临时表中。列被指定为TEXT NOT NULL
(我知道“他们为什么这样做?”;让我们假设我们正在解决这个问题)。
我们在 Linux 上使用 MySQL 5.1.48 Community RHEL5 和 InnoDB 插件 1.0.9。
使用 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?
我面临以下问题。
Run Code Online (Sandbox Code Playgroud)Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In
当前行格式,768 字节的 BLOB 前缀内联存储。
它出现在我将图像上传到数据库时(它具有 <1Mb)。准确地说,只有 100kb。
我尝试了很多事情:更改属性“max_allowed_packet”、“innodb_log_file_size”(即,将大小增加到 512M)并没有什么......
我不知道麻烦的原因。
为了说明,表
TABLE(
`passeio` int(4) unsigned NOT NULL COMMENT 'identitificador do passeio',
`data_inclusao` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`nome_passeio` varchar(200) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`inicio` date NOT NULL,
`fim` date NOT NULL,
`por_que_ir` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`pdf_roteiro` mediumblob NOT NULL,
`incluso` …
Run Code Online (Sandbox Code Playgroud) 我刚刚从 MySQL 5.6 升级到 5.7,并且意外地发现一个 WordPress 插件表包含一个荒谬的 438 个字段,并且超过了 8126 字节的行大小限制。
这是我在运行时收到的警告mysql_upgrade
:
行大小太大 (> 8126)。将某些列更改为 TEXT 或 BLOB 或使用 ROW_FORMAT=DYNAMIC 或 ROW_FORMAT=COMPRESSED 可能会有所帮助。在当前行格式中,内联存储 768 字节的 BLOB 前缀。
不过,这只是一个警告,桌子还在那里。我无法创建具有相同结构的新表,但有趣的是,我可以保留旧表并使用它(至少,SELECT
从它)。
我已经阅读了RolandoMySQLDBA和Bill Karwin对类似主题的回答,但没有任何解决方案可以帮助我:
ROW_FORMAT=DYNAMIC
为还不够,因为该表充满了内联 UTF-8VARCHAR
字段,这些字段仅超过最大大小我已经向插件开发人员报告了这个错误,并希望他们能尽快修复该表,但与此同时,我被这个非法表困住了。
所以问题是:
我从 MySQL 5.6 升级。我也尝试DYNAMIC
和COMPRESSED
格式,但没有运气。我计算了 integer + varchar 字段的大小,它们总共有 17,059 个字节,所以我没有机会以这种方式成功。
该插件名为Photo …