错误消息“Row size Too Large (> 8126)”表示 MySQL 表中的一行超出了默认 8KB 限制。导致此问题的因素有很多,包括表列中使用的数据类型。
一种潜在的解决方案是将某些列更改为 TEXT 或 BLOB 数据类型,因为这些可以容纳更大量的数据。此外,使用 ROW_FORMAT=DYNAMIC 或 ROW_FORMAT=COMPRESSED 还可以通过以更有效的方式存储数据来帮助减小行大小。
但是,提供的错误消息表明,即使进行了这些修改,行大小仍可能太大。这是因为 InnoDB 存储引擎将 BLOB 数据的前 768 字节内联存储在行内,进一步限制了行大小。
要解决此问题,请考虑实施以下解决方案:
切换到 Barracuda 文件格式:
将以下内容添加到 my.cnf文件:
innodb_file_per_table=1
- This file format removes the issue of storing BLOB data inline, allowing larger rows to be accommodated.
使用ROW_FORMAT=COMPRESSED:
执行以下查询来更改表结构:
ALTER TABLE table_name ENGINE=InnoDB ROW_FORMAT=COMPRESSED
- This setting reduces the row size by compressing non-key columns, potentially resolving the issue.
如果上述解决方案仍然无法解决问题,请考虑通过将以下行添加到 my.cnf 暂时切换到 MyISAM 引擎来存储临时数据文件:
internal_tmp_disk_storage_engine=MyISAM
以上是如何修复 MySQL 的'行大小太大”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!