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