靠!见了鬼了,Mysql Varchar(500) 放了700个字符

csdn1111 2009-06-16 03:50:22
还能放呢


RECORD_CONTENT VARCHAR(500)



文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的13213文字的文字的文字的文字的文字12312312321
...全文
592 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2009-06-16
  • 打赏
  • 举报
回复

反之亦然,检查一下你的表的字符集设置和系统的字符集

show create table t1;
show variables like 'char%';
ACMAIN_CHM 2009-06-16
  • 打赏
  • 举报
回复

RECORD_CONTENT VARCHAR(500)

要检查一下你的字符集是什么,如果不是UTF8 或者汉字的,比如latin1,则只是 500 个字节而已,而你的汉字如果是gb2312则需要2字节,当然放不下了。

参见如下例子。

mysql> create table tx (c1 varchar(10));
Query OK, 0 rows affected (0.09 sec)

mysql> insert into tx values ('1234567890');
Query OK, 1 row affected (0.06 sec)

mysql> insert into tx values ('文字文字文字文字文字');
ERROR 1406 (22001): Data too long for column 'c1' at row 1
mysql> insert into tx values ('文字文字文');
Query OK, 1 row affected (0.06 sec)

mysql> show create table tx;
+-------+---------------------------------------
| Table | Create Table
+-------+---------------------------------------
| tx | CREATE TABLE `tx` (
`c1` varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+---------------------------------------
1 row in set (0.00 sec)

mysql>


sunday_bj 2009-06-16
  • 打赏
  • 举报
回复
varchar(300)只是定义显示结果的边框的长度,不是变量的长度
aotianlong 2009-06-16
  • 打赏
  • 举报
回复
哈哈,最新的MYSQL 的 varchar 支持 65535 个字符。
去查MYSQL手册吧
sciland 2009-06-16
  • 打赏
  • 举报
回复
varchar(n) 长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。
你出现的那种情况,主要是字符和字节造成的,500个字符,utf8的每个汉字需要3个字节,而用length查看某个字段长度时,是按照字节进行的,原因就在这里了
csdn1111 2009-06-16
  • 打赏
  • 举报
回复
utf8_general_ci
WWWWA 2009-06-16
  • 打赏
  • 举报
回复
什么字符集?700个汉字?

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧