【问题标题】:mysqli row size too largemysqli 行大小太大
【发布时间】:2012-06-14 22:19:31
【问题描述】:

我正在尝试将数据插入到使用 innodb 存储引擎的 mysql 表中,但出现此错误:

Mysqli statement execute error : Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126. You have to change some columns to TEXT or BLOBs

我理解错误,但我的表格几乎只由 text 和 mediumtext 列组成。 基本上,我正在尝试存储来自 Web 服务的一组可变长度的 xml 响应。我能够保存这些响应(请求在批处理过程中按顺序发生),直到我到达 col14,其中响应的插入给出了上述错误

如果我不能让它工作,我的备份想法就是将 xml 保存在服务器上并将文件位置放在数据库中。

我已经包含了创建表代码

CREATE TABLE IF NOT EXISTS `qb_results` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `col1` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL,
  `col2` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `col3` text COLLATE utf8_unicode_ci,
  `col4` text COLLATE utf8_unicode_ci,
  `col5` text COLLATE utf8_unicode_ci,
  `col6` text COLLATE utf8_unicode_ci,
  `col7` mediumtext COLLATE utf8_unicode_ci,
  `col8` mediumtext COLLATE utf8_unicode_ci,
  `col9` mediumtext COLLATE utf8_unicode_ci,
  `col10` mediumtext COLLATE utf8_unicode_ci,
  `col11` mediumtext COLLATE utf8_unicode_ci,
  `col12` mediumtext COLLATE utf8_unicode_ci,
  `col13` mediumtext COLLATE utf8_unicode_ci,
  `col14` mediumtext COLLATE utf8_unicode_ci,
  `col15` mediumtext COLLATE utf8_unicode_ci,
  `col16` mediumtext COLLATE utf8_unicode_ci,
  `col17` mediumtext COLLATE utf8_unicode_ci,
  `col18` mediumtext COLLATE utf8_unicode_ci,
  `updated_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=61 ;

编辑 - 将列更改为编号,因为它们是特定于业务的,并且认为包含其实际列名没有必要或相关。规范化实际上会解决问题,但仍然不能解释给定上下文的错误(错误说使用文本列,这些列已经在使用)

【问题讨论】:

  • 编号列...闻起来像是标准化的候选者?这也将解决长度问题。请注意,使用 utf-8 会大大增加非文本列中的已用空间。
  • 列编号?只是……不要。将其设为 qb_results (id, set, data),这样您将拥有记录而不是列。

标签: mysql xml mysqli innodb


【解决方案1】:

我也遇到了同样的问题。请执行下列操作: 设置引擎 = MyISAM。 此外,如果您的脚本很庞大,您可能需要更改脚本的执行时间。 在这种情况下,打开 PHP 的配置文件(windows 为 php.ini)并设置

max_execution_time=150 //(suppose) you can set it whatever you feel right.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-29
    • 2019-05-17
    • 2017-08-06
    • 1970-01-01
    • 2013-06-27
    • 2021-04-11
    • 2016-02-23
    • 1970-01-01
    相关资源
    最近更新 更多