varchar超长问题

版本不同么

同一个库上,原地新建的一个备份表

后改了长度吗

估计是乱码造成的吧

长度改后,可以

不是乱码,查询没有乱码

存放的什么数据,新老表的字符集都是一样吗

最大支持65535,如果还是超过的话,建议放非关系型数据库

字段内容什么样的,是不是可以考虑分开存

你有尝试在原表中插入一条超长的数据能否成功吗?

根据报错日志,应该是数据太长了,和字符集应该有关。

1.bug 问题2.使用问题。低版本出问题原因可能较大。

有没有控制按字符存储或者按字节存储的参数?

提示很明显,建议找到字符长度为336的值,看是不是业务代码导致值变化

能把表结构展示下吗?如果表结构是gbk的话,我看了下5.4开始支持gbk编码,之前不支持,但是你设置gbk的话默认好像是utf8mb4。有没有是这个可能

字符集 乱码?特殊字符?找到字符长度为336的值,问下业务有没有变化

现实中用不到越界长度的字符吧

不用纠结,扩展varchar长度就可以了。有可能以前程序写入硬编码刚好满足varchar,程序字符集跟数据库字符集不一致等

原表再插入一条超过字段定义长度的字符串,看看是否还能插入进去

可以动态设置大小