如题,插入表的时候插不进汉字:
mysql> CREATE TABLE t2(name  varchar(20));
Query OK, 0 rows affected (0.08 sec)mysql> insert into t2 values('张三');
ERROR 1406 (22001): Data too long for column 'name' at row 1
mysql> insert into t2 values('zhangsan');
Query OK, 1 row affected (0.06 sec)
mysql> SHOW VARIABLES LIKE 'character_set_%';
+--------------------------+----------------------------------------------------
-----+
| Variable_name            | Value
     |
+--------------------------+----------------------------------------------------
-----+
| character_set_client     | gbk
     |
| character_set_connection | gbk
     |
| character_set_database   | latin1
     |
| character_set_filesystem | binary
     |
| character_set_results    | gbk
     |
| character_set_server     | latin1
     |
| character_set_system     | utf8
     |
| character_sets_dir       | C:\Program Files\MySQL\MySQL Server 5.0\share\chars
ets\ |
+--------------------------+----------------------------------------------------
-----+
8 rows in set (0.00 sec)
已做的操作:
MY.INI:
default-character-set=latin1添加
default-character-set=gb2312

alter database charset = gb2312;
初学mysql,实在不知道怎么处理了,特来请教.

解决方案 »

  1.   

    你先
    set names=gbk;
    然后再执行insert看看
      

  2.   

    在MY.INI里面把所有的default-character-set都改成
    default-character-set=gbk,然后重启mysql就可以了。
      

  3.   

    回1楼的大胖:
    mysql> SET NAMES GBK\g
    Query OK, 0 rows affected (0.00 sec)mysql> insert into t2 values('张三')\g
    ERROR 1406 (22001): Data too long for column 'name' at row 1还是这个错误。
      

  4.   

    在my.ini里找到
    sql-mode=”STRICT_TRANS_TABLES,NO_AUTO_Create_USER,NO_ENGINE_SUBSTITUTION”
    把其中的
    STRICT_TRANS_TABLES,
    去掉,然后重启mysql就ok了 
      

  5.   


    mysql> show create table t2;
    +-------+--------------------------------------
    -----------------------+
    | Table | Create Table
                           |
    +-------+--------------------------------------
    -----------------------+
    | t2    | CREATE TABLE `t2` (
      `name` varchar(20) default NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
    +-------+--------------------------------------
    -----------------------+
    1 row in set (0.00 sec)
    再修改表的字符集:
    mysql> alter table t2 convert to character set utf8;mysql> show create table t2;
    +-------+--------------------------------------
    -----------------------+
    | Table | Create Table
                           |
    +-------+--------------------------------------
    -----------------------+
    | t2    | CREATE TABLE `t2` (
      `name` varchar(20) default NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
    +-------+--------------------------------------
    -----------------------+
    1 row in set (0.00 sec)然后再插入中文和读取中文都正常了。问题:这个表的默认字符配置是在那里配置的?我创建表的时候没有配置这个。