还能放呢
RECORD_CONTENT     VARCHAR(500)文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的13213文字的文字的文字的文字的文字12312312321

解决方案 »

  1.   

    varchar(n) 长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。
    你出现的那种情况,主要是字符和字节造成的,500个字符,utf8的每个汉字需要3个字节,而用length查看某个字段长度时,是按照字节进行的,原因就在这里了
      

  2.   

    哈哈,最新的MYSQL 的 varchar 支持 65535 个字符。
    去查MYSQL手册吧
      

  3.   

    varchar(300)只是定义显示结果的边框的长度,不是变量的长度
      

  4.   

    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>
      

  5.   

    反之亦然,检查一下你的表的字符集设置和系统的字符集show create table t1;
    show variables like 'char%';