【原创】mysql数据库异常:data truncate for column “*” at row *;data too long *。原因,及解决。

数据库异常

1.data truncate for column “*” at row *:

就是数据被截断,类似时间被截短(字段属性为date,要存储的数据为timestamp),精度下降。

将数据库的字段属性调整合适,或者将要存储的数据进行精度调整即可。

2.data too long ***:

显然就是说你的数据长度超了,字段最长支持5位,你来了个10位,装不下了,就报这个错。

更上一个异常的处理类似即可。

如果不能解决

如果就像上面那样,我写这个就太蛋疼了。

现在就来说安照上面的做法,你修改了数据,调整了数据库,可是还是会报上面的错误,这是为什么呢?

一般发生这种问题,按上述做法后不生效的,大多可能用到了mysql的 enum(枚举类型) character。(或者其他也会有)

问题就是编码,你传入的数据编码格式与mysql的编码格式不同,导致数据库接收到的数据解析后与你的枚举不同,所以导致你无法插入(insert)、更新(update)。

如果不是枚举的话,应该不会报错,只是你输入的中文内容会变为乱码。

解决

这个时候就要把数据库的编码格式改为我们常用的“utf-8”编码,具体做法如下:

找到mysql的my.cnf文件(linux下)

默认为: /etc/mysql   my.cnf

找到  “[client]” , 在他的下面添加一行

“default-character-set=utf8” (没错,是utf8,不是utf-8)

找到 “[mysqld]” , 在他的下面添加一行

“character-set-server=utf8”

重启数据库,可以重新执行下更新、或插入操作看看;

也可以进到mysql内 执行“ show variables like "character-set%";

 

 

原文地址:https://www.cnblogs.com/love-julia/p/3467957.html