mysql 一列长度过大怎么处理

mysql 一列长度过大怎么处理,第1张

MySQL 数据库的varchar类型在4.1以下的版本中的最大长度限制为255,其数据范围可以是0~255或1~255(根据不同版本数据库来定)。在 MySQL5.0以上的版本中,varchar数据类型的长度支持到了65535,也就是说可以存放65532个字节的数据,起始位和结束位占去了3个字 节,也就是说,在4.1或以下版本中需要使用固定的TEXT或BLOB格式存放的数据可以使用可变长的varchar来存放,这样就能有效的减少数据库文 件的大小。MySQL 数据库的varchar类型在4.1以下的版本中,nvarchar(存储的是Unicode数据类型的字符)不管是一个字符还是一个汉字,都存为2个字节 ,一般用作中文或者其他语言输入,这样不容易乱码 varchar: 汉字是2个字节,其他字符存为1个字节 ,varchar适合输入英文和数字。4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节) ;5.0版本以上,varchar(20),指的是20字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放20个,最大大小是65532字节 ;varchar(20)在Mysql4中最大也不过是20个字节,但是Mysql5根据编码不同,存储大小也不同,具体有以下规则: a) 存储限制 varchar 字段是将实际内容单独存储在聚簇索引之外,内容开头用1到2个字节表示实际长度(长度超过255时需要2个字节),因此最大长度不能超过65535。 b) 编码长度限制 字符类型若为gbk,每个字符最多占2个字节,最大长度不能超过32766 字符类型若为utf8,每个字符最多占3个字节,最大长度不能超过21845。 若定义的时候超过上述限制,则varchar字段会被强行转为text类型,并产生warning。 c) 行长度限制 导致实际应用中varchar长度限制的是一个行定义的长度。 MySQL要求一个行的定义长度不能超过65535。若定义的表长度超过这个值,则提示 ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs。

不能超过1M。

经查询mysqlfindinse相关资料可知,长度限制最大不能超过1M。

MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,目前属于Oracle旗下产品。

mysql中 varchar(20)数据长度超过了是设置错误造成的,解决方法为:

1、通过my.ini(Linux下为my.cnf)的配置文件进行修改。一般my.ini文件在安装文件的根目录下。

2、系统是Windows10,安装目录下没有my.ini文件。

3、仔细找了一下,my.ini文件在ProgramData下。

4、打开配置文件,在 [mysqld] 的后面加入一行“ft_min_word_len=1”。PS:也可以设置成ft_min_word_len=2,具体情况根据自己的中文数据而定。

5、重启MySQL服务。注意,配置文件修改后一定要重启服务后才能生效。

6、查看一下最小索引长度,确定生效。SQL语句:SHOW GLOBAL VARIABLES LIKE '%__word_len%'。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8656605.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-19
下一篇 2023-04-19

发表评论

登录后才能评论

评论列表(0条)

保存