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%"; ”
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:【原创】mysql数据库异常:data truncate for column “*” at row *;data too long *。原因,及解决。 - Python技术站