您的位置:首页 > 数据库 > MySQL

解决 mysql [Data Too Long..]数据更新失败的异常

2016-11-03 13:07 549 查看
最近数据库经常出现如下异常:

 multiQuery Query Failed, ERRNO: 1406 (Data too long for column....)

解决方案:

1.检查数据库中该字段的长度是否太小(如果字段类型是字符串类型(varchar,char)),太小只要增大这个字段的长度即可,但是mysql一张表的varchar总长度不能超过65535,如果超过需要对表进行压缩

2.如果字段类型是text,则检查数据库innodb_file_format 格式

mysql> show variables like '%format%';

+--------------------------+-------------------+

| Variable_name            | Value             |

+--------------------------+-------------------+

| binlog_format            | STATEMENT         |

| date_format              | %Y-%m-%d          |

| datetime_format          | %Y-%m-%d %H:%i:%s |

| default_week_format      | 0                 |

| innodb_file_format       | Barracuda         |

| innodb_file_format_check | ON                |

| innodb_file_format_max   | Antelope          |

| time_format              | %H:%i:%s          |

+--------------------------+-------------------+

需要将innodb_file_format   改为 Barracuda   这个模式应该和row压缩有关

步骤如下:

1.linux下打开 mysql配置文件(在 /etc/my.cnf),加入:

innodb_file_format=Barracuda

2:在数据库中执行:

SET GLOBAL innodb_file_format=Barracuda;

ALTER TABLE [tableName]

    ENGINE=InnoDB //表的存储引擎

    ROW_FORMAT=COMPRESSED //row的格式,有DEFAULT(默认)、FIXED(混合)、DYNAMIC(动态)、COMPRESSED(压缩)、REDUNDANT(冗长)、COMPACT(紧凑)

    KEY_BLOCK_SIZE=8; //压缩InnoDB的缓冲池的索引页


更多关于压缩的资料,参考:http://dev.mysql.com/doc/refman/5.7/en/innodb-compression-usage.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql
相关文章推荐