Chinaunix

标题: Mysql关于varchar和text字段的疑问 [打印本页]

作者: sancaiyujia    时间: 2017-07-26 16:40
标题: Mysql关于varchar和text字段的疑问
请教下各位一个问题:在5.6.25版本中创建表时发现有这个问题:
[Err] 1118 - Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs


但是在5.7.18这个版本执行同样的SQL不报错,所以想请教下,上面这个问题是一个bug吗?

作者: seesea2517    时间: 2017-07-27 10:00
参考官方手册即使在8.0对于行大小的限制也是一样的,看上去都没有什么调整,应该在5.7同样要提示错误的。你看看执行完毕后的表的结构是不是和你的执行语句是一样的,网上有看到一些文章写客户端工具会做自动调整。
https://dev.mysql.com/doc/refman/5.5/en/column-count-limit.html
https://dev.mysql.com/doc/refman/5.7/en/column-count-limit.html
https://dev.mysql.com/doc/refman/8.0/en/column-count-limit.html
作者: sancaiyujia    时间: 2017-07-27 10:41
谢谢,解答

作者: lyhabc    时间: 2017-07-27 11:03
先看一下你的sqlmode,sqlmode为空的不会去检查,但是会截断你的数据长度,所以依然插入成功的
作者: sancaiyujia    时间: 2017-07-27 14:29
我对比了,字段数和数据类型都是一样的

作者: sancaiyujia    时间: 2017-07-27 15:04
我知道了,我用的拉丁文字符集,而不是uft-8字符集,所以在我的测试环境能创建,而在正式环境不能创建

作者: lyhabc    时间: 2017-07-28 09:50
sancaiyujia 发表于 2017-07-27 15:04
我知道了,我用的拉丁文字符集,而不是uft-8字符集,所以在我的测试环境能创建,而在正式环境不能创建

latin1是一个字符一个字节,utf8是一个字符三个字节,难怪不够了

作者: seesea2517    时间: 2017-07-28 16:42
回复 6# sancaiyujia

这样啊,感谢分享~
作者: sancaiyujia    时间: 2017-07-29 17:42
其实是我,要感谢大家的帮忙,才能解决我这些疑惑,非常谢谢大家





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2