Mysql 报Row size too large 65535 的原因及解决方法

当我们在 MySQL 中创建一张数据表时,如果某个字段的数据类型是 text 或 blob,那么在该表的行的最大大小不能大于 65535 字节,否则就会报 "Row size too large" 的错误。

这个错误的原因是,MySQL 默认的 InnoDB 存储引擎的单行限制大小为 65535 字节,如果一条记录长度超过了这个值,则 MySQL 就无法存储这条记录。

解决这个问题的方法有以下三种:

1. 将表的类型换成 MyISAM

MyISAM 存储引擎类型的表单行限制大小是 65536 字节,可将表的类型更改为 MyISAM,以达成错误消除的目的。

ALTER TABLE `table_name` ENGINE = MyISAM;

2. 调整字段类型

通过调整表中的字段类型来减少记录长度。

示例 1:将 text 类型的字段修改成 varchar 类型的字段,这样可以占用更少空间,同时避免了 "Row size too large" 的错误。

ALTER TABLE `table_name` MODIFY `text_col` VARCHAR(2048);

示例 2:将 BLOB 类型的字段修改成 MEDIUMBLOB 类型的字段,这样可以缩小字段的长度,使其符合单行大小限制要求:

ALTER TABLE `table_name` MODIFY `blob_col` MEDIUMBLOB;

3. 将数据拆分成多个字段或表

如果单行大小超过了 65535 字节,可以考虑将原数据表拆分成多张表或多个字段。例如,将一个大的 text 字段拆分成多个 text 字段,或将一个大的数据库表分割成多个表。

示例:将数据表中的字段分成两张表:

CREATE TABLE `table_name_1` (
  `id` INT(11) PRIMARY KEY AUTO_INCREMENT,
  `col1` TEXT,
  `col2` TEXT
);

CREATE TABLE `table_name_2` (
  `id` INT(11) PRIMARY KEY AUTO_INCREMENT,
  `col3` TEXT,
  `col4` TEXT
);

以上是解决 "Row size too large" 的错误的几种方法,我们可以根据具体情况选择合适的方法进行处理。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Mysql 报Row size too large 65535 的原因及解决方法 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • 【原创】mysql数据库异常:data truncate for column “*” at row *;data too long *。原因,及解决。

    1.data truncate for column “*” at row *: 就是数据被截断,类似时间被截短(字段属性为date,要存储的数据为timestamp),精度下降。 将数据库的字段属性调整合适,或者将要存储的数据进行精度调整即可。 2.data too long ***: 显然就是说你的数据长度超了,字段最长支持5位,你来了个10位,装不下了…

    MySQL 2023年4月13日
    00
  • Mysql之INTERVAL与DATE_SUB与EXTRACT函数的使用

    1. INTERVAL INTERVAL代表的是时间间隔MySQL中的时间间隔类型有如下几种:       1.1 利用INTERVAL做时间的加减法 示例: 加法:SQL>SELECT DATE ‘2018-11-01′ + INTERVAL ’10 11’ DAY_HOUR;结果:2018-11-11 11:00:00减法:SQL> sele…

    MySQL 2023年4月13日
    00
  • PHP读取MySQL中文乱码

    今天用PHP读取的MySQL中的中文内容字段,结果读取出来的居然乱码。 使用下面的语句设置连接编码,结果还是照旧。 $charset = $params[‘charset’]; mysql_query(‘SET character_set_connection=$charset, character_set_results=$charset, charact…

    MySQL 2023年4月13日
    00
  • MYSQL 性能分析器 EXPLAIN 用法实例分析

    下面我将详细讲解“MYSQL 性能分析器 EXPLAIN 用法实例分析”的完整攻略,包括EXPLAIN的概念、语法和常用参数;同时提供两个示例说明。具体内容如下: 概念与语法 EXPLAIN是MYSQL中用来分析查询执行的工具,可以通过分析查询语句的执行计划,查看优化器在查询优化过程中的各种行为。EXPLAIN可以告诉我们:查询语句需要扫描多少行数据;使用了…

    MySQL 2023年5月19日
    00
  • MySQL 5.7新特性介绍

    MySQL 5.7新特性介绍 MySQL 5.7是一款经过大量优化和改进的版本,它带来了许多新的特性。本文将介绍其中的一些更为重要的特性。 更好的性能 InnoDB引擎优化 在MySQL 5.7中,InnoDB存储引擎进行了大量的优化和改进,这些改进使得InnoDB在性能和可伸缩性方面都比以前版本更加优秀。 多线程复制 MySQL 5.7的复制机制现在支持多…

    MySQL 2023年5月19日
    00
  • 怎么提升索引的使用效率,设计出更高效的索引?

    索引是数据库系统中的重要概念之一,它可以提升数据库的检索和有效的存储,能够加快数据检索的速度,缩短数据库查询的响应时间,提高数据库的性能。 虽然索引的应用对性能的提升有很大的作用,但是索引设计不合理也会适得其反,导致数据库查询性能变差。因此要提升索引的使用效率,需要设计出更高效的索引,以下是几个方面的详细说明: 合理选择索引字段 在设计索引时,应该注意合理选…

    MySQL 2023年3月10日
    00
  • 从MySQL 5.5迁移到Mariadb 10.1.14所遇到的问题

    从MySQL 5.5迁移到MariaDB 10.1.14的过程需要注意以下问题: 1. 备份数据 在进行迁移之前,首先要确保数据库中的数据都被备份了。可以使用mysqldump来备份,示例如下: sudo mysqldump -u root -p –all-databases > backup.sql 2. 安装MariaDB 在Ubuntu系统中,…

    MySQL 2023年5月18日
    00
  • 在CentOS7环境下安装Mysql

    1、wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm // 下载mysql yum源 2、rpm -ivh mysql57-community-release-el7-11.noarch.rpm // 安装yum源 3、yum install mysql-com…

    MySQL 2023年4月12日
    00
合作推广
合作推广
分享本页
返回顶部