MySQL中最大行大小的问题


8

我在使用MySQL时遇到问题,我的表中包含许多文本字段。当我尝试存储一些数据时,出现此错误。

行大小太大。使用的表类型(不计BLOB)的最大行大小为8126。您必须将某些列更改为TEXT或BLOB

我存储在每个字段中的文本不太长,每个字段中只有几段。

我能做什么?

Answers:


9

感谢您的回答。您发布的链接是开始学习的非常有用的基础。

最后,我找到了以下页面:http : //download.oracle.com/docs/cd/E17952_01/refman-5.5-zh/innodb-compression-usage.html

然后我配置了my.cnf,在本[mysqld]节中添加了这两行:

innodb_file_per_table
innodb_file_format = Barracuda

然后我ALTER通过phpMyAdmin使用此命令创建表:

ALTER TABLE nombre_tabla
 ENGINE=InnoDB
 ROW_FORMAT=COMPRESSED 
 KEY_BLOCK_SIZE=8; 
 SHOW WARNINGS;

也可以使用您可以在上面的链接中阅读的其他设置,但是这些设置对我很有用。


我没有找到很多有关COMPRESSED和Barracuda缺点的信息。如果那更好并且解决了这个问题,为什么不总是使用它呢?
Ted

3

您可能需要看一下这篇文章该文章对MySQL行大小进行了很多解释。重要的是要注意,即使您使用TEXT或BLOB字段,您的行大小仍可能超过8K(InnoDB的限制),因为它为页面中的每个行内字段存储前768个字节。解决此问题的最简单方法是在InnoDB中使用梭子鱼文件格式。通过仅存储指向文本数据的20字节指针而不是存储第一个768字节,基本上可以完全解决该问题。


1

好吧,按照mysql所说的做:将大字段从varchar转换为text或blob(ALTER TABLE)。文本字段的行为很像varchar(索引需要前缀长度,但仍然可以工作),但它们分别存储。

该参考资料告诉您每个库存mysql表引擎的确切限制:

http://dev.mysql.com/doc/refman/5.0/zh-CN/column-count-limit.html

这是有关文本字段的所有知识:

http://dev.mysql.com/doc/refman/5.0/en/blob.html


感谢@korkman的回答,发生问题时,我的字段已被定义为文本。我将看您的链接建议。
Memochipan 2011年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.