在开发中我遇到两个现象:
1. content 字段在 mysql 的数据类型定义为 varchar(2000),但是表单提交过来的数据是 3674.数据库在 insert 的时候并没有报错,而是自动截取了。
2. mysql 的数据类型定义为 varchar(4000),应用没有重启还是会自动截取。
那么问题来了,这个是 php 处理的呢还是 mysql 处理的?
1
ben548 OP 额,自问自答一下吧,
|
2
ben548 OP 自问自答一下,经过测试证实是 mysql 做的处理,另外修改字段长度之后不需要重启就能立即生效。。。我好傻
|
3
better0332 2015-12-17 17:22:03 +08:00
你查查 varchar 最大长度是多少
|
4
ben548 OP @better0332 65535 个字节,字符类型若为 gbk ,每个字符最多占 2 个字节,最大长度不能超过 32766;
字符类型若为 utf8 ,每个字符最多占 3 个字节,最大长度不能超过 21845 。这个跟问题的关联在哪里啊? |
5
moro 2015-12-17 17:36:56 +08:00
修改字段类型为 text
|
6
ben548 OP 结贴啦,问题已经解决了
|
7
Zzzzzzzzz 2015-12-17 17:52:29 +08:00
@ben548 你这是 mysql<=4.0 时代没编码时期按字节算时代的东西, 现在设置编码正确的话 n 就是 n 个字, 不管是中文还是英文, 除非你编码设置错, 不过原则上不建议 varchar 超过 255.
|
8
elgoog1970 2015-12-17 22:04:19 +08:00
为啥不用 text 呢
|