解决 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
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
相关文章推荐
- Data too long for column 'name' at row 1 mysql的抛出异常的解决办法
- MySql中插入中文数据提示Data too long for column X at row n的解决
- 读取MYSQL中文数据乱码,解决data too long for column 'title' at row 1
- 读取MYSQL中文数据乱码,解决data too long for column 'title' at row 1
- Data too long for column 'name' at row 1 mysql的抛出异常的解决办法--之前方法不管用-要设置数据库编码
- mysql Data too long for column ‘xxx’ at row xxx的解决方法
- Mysql 中ERROR 1406 (22001): Data too long for column 解决方法
- Hibernate插入数据时报错Data truncation: Data too long for column 'name' at row 1 解决办法
- MySql 弹出“data too long for column 'xxx' at row 1"解决方法
- MySQL字符集 GBK、GB2312、UTF8区别 解决 MYSQL中文乱码问题以及error 1406:data too long for column 'name' at row 1
- phpMyAdmin执行成功,但是mysql命令source导入失败: Data too long for column
- mysql Data too long for column ‘xxx’ at row xxx的解决方法
- (汉字问题1)mysql中data too long for column问题的解决方法
- DBD::mysql::st execute failed: Data too long for column...解决办法之一
- Mysql 中ERROR 1406 (22001): Data too long for column 解决方法
- mysql中data too long for column问题的解决方法
- Mysql 中ERROR 1406 (22001): Data too long for column 解决方法
- mysql建表时指定编码,避免Data too long for column.....的异常
- mysql中存中文时出现“Data too long for column”
- Mysql的错误,待解决[已解决]Data source rejected establishment of connection message from server: "Too many connections";