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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 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,否则会因为已有数据并不存在这个新增的非空字段而报出该错误!


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

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4月前
|
存储 关系型数据库 MySQL
使用阿里云的数据传输服务DTS(Data Transmission Service)进行MySQL 5.6到MySQL 8.0的迁移
使用阿里云的数据传输服务DTS(Data Transmission Service)进行MySQL 5.6到MySQL 8.0的迁移
48 1
|
4月前
|
关系型数据库 MySQL
MySQL 报错 [ERROR] [FATAL] InnoDB: Table flags are 0 in the data dictionary but the flags in file
MySQL 报错 [ERROR] [FATAL] InnoDB: Table flags are 0 in the data dictionary but the flags in file
323 0
|
7月前
|
SQL 关系型数据库 MySQL
解决:MySQL找不到data文件的位置
解决:MySQL找不到data文件的位置
122 0
|
2月前
|
SQL 关系型数据库 MySQL
MySQL技能完整学习列表10、数据导入和导出——1、数据导入(LOAD DATA, mysqldump)——2、数据导出(SELECT ... INTO OUTFILE, mysqldump)
MySQL技能完整学习列表10、数据导入和导出——1、数据导入(LOAD DATA, mysqldump)——2、数据导出(SELECT ... INTO OUTFILE, mysqldump)
49 0
|
5天前
四种解决”Arg list too long”参数列表过长的办法
这些方法都可以帮助你避免因参数列表过长而导致的错误。选择方法取决于具体情况和需求。
10 0
|
1月前
|
关系型数据库 MySQL 数据库
使用阿里云的数据传输服务DTS(Data Transmission Service)进行MySQL 5.6到MySQL 8.0的迁移
【2月更文挑战第29天】使用阿里云的数据传输服务DTS(Data Transmission Service)进行MySQL 5.6到MySQL 8.0的迁移
223 2
|
5月前
|
Java
IDEA-解决Command line is too long. Shorten command line for SpringBootMainApplication or also for App
IDEA-解决Command line is too long. Shorten command line for SpringBootMainApplication or also for App
58 0
|
2月前
|
关系型数据库 MySQL 数据库
MySQL技能完整学习列表——1、数据库基础概念——2、数据库管理系统(DBMS)——3、数据模型(Data Model)
MySQL技能完整学习列表——1、数据库基础概念——2、数据库管理系统(DBMS)——3、数据模型(Data Model)
26 0
|
3月前
|
SQL 搜索推荐 关系型数据库
Mysql报Cause: java.sql.SQLException: Incorrect string value: ‘\xE5\xA4\x96‘...for column username
Mysql报Cause: java.sql.SQLException: Incorrect string value: ‘\xE5\xA4\x96‘...for column username
24 0
|
3月前
|
关系型数据库 MySQL
mysql 5.5.62版本建表语句报错: Index column size too large. The maximum column size is 767 bytes
mysql 5.5.62版本建表语句报错: Index column size too large. The maximum column size is 767 bytes

热门文章

最新文章