如题,插入表的时候插不进汉字:
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,实在不知道怎么处理了,特来请教.
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,实在不知道怎么处理了,特来请教.
set names=gbk;
然后再执行insert看看
default-character-set=gbk,然后重启mysql就可以了。
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还是这个错误。
sql-mode=”STRICT_TRANS_TABLES,NO_AUTO_Create_USER,NO_ENGINE_SUBSTITUTION”
把其中的
STRICT_TRANS_TABLES,
去掉,然后重启mysql就ok了
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)然后再插入中文和读取中文都正常了。问题:这个表的默认字符配置是在那里配置的?我创建表的时候没有配置这个。