1406 - Data too long for column ‘deintro‘ at row 1报错原因以及解决办法

今天用MySql数据库打算插入几个数据,大约有几千个汉字左右,插入的时候出现了这个错误。
1406 - Data too long for column ‘deintro’ at row 1

问题原因:

开始设置的数据类型为varchar,要输入的数据较多
插入的数据比数据类型大,会被截断时,就会报错,无法插入。

解决办法:

后来我把varchar数据类型换成了mediumtext。
这样就不会报错了。

新的问题:

问题一

mediumtext类型长度无法更改,数据表中长度为0,改成别的值保存仍为0。

答:这个类型是在另外开辟了一个存储空间保存的,表中是存了一个指针指向这个外部存储空间的问题。存储的长度也是固定的。

问题二

虽然可以插入文字了,但是插入的汉字有字数限制,仅仅可存储700多个字符。
答:这个还没解决

问题三

数据我存进去了,显示的也是汉字,但是我把数据库表格关闭重新打开后,数据统一变成了(BLOB)
在这里插入图片描述
答:后来我查了一下。text字段如果使用utf8_bin编码,数据库会显示blob,并且会乱码。我看了一下自己的也确实用的UTF8-bin编码。
解决办法:把utf8-bin改成utf8_general_ci就可以了

另外在这里科普一下utf8_unicode_ci、utf8_general_ci和utf8_bin这几个的区别:

utf8__bin是用二进制存储并比较,区别大小写,存储二进制内容时使用
utf8_general_ci:校对速度快,但准确度稍差,使用中英文时使用
utf8_unicode_ci:准确度高,但校对速度稍慢,使用德法俄等外语时使用
这样就一目了然了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值