MySQL出现Data too long for column...(错误号1406)和 Data truncated for column...(错误号1265)

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: MySQL出现Data too long for column...(错误号1406)和 Data truncated for column...(错误号1265)

1406错误


对数据库中的已经写好数据的表进行了改变,结果出现下图错误


20190120140420337.png


通过查阅发现导致1406的错误原因有很多,而我的错误原因在于数据信息过长超过了原本分配数据库对应字段的空间最大值,通过增加分配的字段空间就解决了。 例如:我给varchar(5) 存入 “88888888” 这样是不可以的,应该分配字段更大的空间 如varchar(300)


如果还是不能解决问题,那么下面这个步骤,你值得一试(来自博客):


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的缓冲池的索引页


1265错误


20190120142556787.png


出现该错误的原因可能有很多,但我经过几次操作后发现自己总是遇到这个错误,通过字面上的意思是插入的错误的数据或者是说你的某个字段(错误中有提示)定义的长度不够,你存入的数据已经被截断


发现我的错误原因还是字段定义的长度不够,和1406错误原因相同


总是出现这样的问题,我们应该反思一下,从最初就杜绝问题的发生


解决办法:

(1)设计表的时候就要考虑全面各个字段的数据类型,以及是否允许为空Null

(2)删除数据表中的所有数据,再向表中添加字段,此时可以将该字段设置为不为空;如果不删除数据,则必须设置为允许为空Null,否则会因为已有数据并不存在这个新增的非空字段而报出该错误!


望能解决大家的问题,共同进步!

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
11月前
|
监控 关系型数据库 MySQL
|
SQL 关系型数据库 MySQL
mysql下出现Unknown column ‘xx‘ in ‘on clause‘的完全解决方法
mysql下出现Unknown column ‘xx‘ in ‘on clause‘的完全解决方法
911 0
|
关系型数据库 MySQL
解决MySQL insert出现Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘xxx‘ at row 1
解决MySQL insert出现Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘xxx‘ at row 1
1192 2
|
关系型数据库 MySQL 测试技术
MySQL 报错 ERROR 1709: Index column size too large
MySQL 报错 ERROR 1709: Index column size too large
665 4
|
分布式计算 DataWorks 监控
DataWorks操作报错合集之遇到“OSERROR: argument list too long”的错误,该如何处理
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
212 1
|
分布式计算 DataWorks 关系型数据库
DataWorks操作报错合集之数据源同步时,使用脚本模式采集mysql数据到odps中,使用querySql方式采集数据,在脚本中删除了Reader中的column,但是datax还是报错OriginalConfPretreatmentUtil - 您的配置有误。如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
Intellij IDEA运行报Command line is too long的解决办法
Intellij IDEA运行报Command line is too long的解决办法
1884 1
|
关系型数据库 MySQL
MySQL创建表出现 Specified key was too long; max key length is 767 bytes
MySQL创建表出现 Specified key was too long; max key length is 767 bytes
504 2
四种解决”Arg list too long”参数列表过长的办法
这些方法都可以帮助你避免因参数列表过长而导致的错误。选择方法取决于具体情况和需求。
881 0
|
关系型数据库 MySQL 数据库
Specified key was too long; max key length is 767 bytes导入mysql数据库表报错
Specified key was too long; max key length is 767 bytes导入mysql数据库表报错
1380 0

热门文章

最新文章

推荐镜像

更多