mysql truncate 失败_【原创】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%"; ”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值