mysql中文乱码的问题

dengshangkun 2008-05-06 04:29:48
如题,插入表的时候插不进汉字:
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,实在不知道怎么处理了,特来请教.
...全文
156 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
dengshangkun 2008-05-07
  • 打赏
  • 举报
回复

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)

然后再插入中文和读取中文都正常了。

问题:这个表的默认字符配置是在那里配置的?我创建表的时候没有配置这个。
dengshangkun 2008-05-07
  • 打赏
  • 举报
回复
回4楼的,用你的办法可以把数据中文插到表里了,但是读取的时候是 ??.这个还需要修改那里的配置呢?
dengshangkun 2008-05-07
  • 打赏
  • 举报
回复
2楼的方法解决不了,还是一样的提示。
caixuechun 2008-05-06
  • 打赏
  • 举报
回复
在my.ini里找到
sql-mode=”STRICT_TRANS_TABLES,NO_AUTO_Create_USER,NO_ENGINE_SUBSTITUTION”
把其中的
STRICT_TRANS_TABLES,
去掉,然后重启mysql就ok了
dengshangkun 2008-05-06
  • 打赏
  • 举报
回复
回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

还是这个错误。
hy2003fly 2008-05-06
  • 打赏
  • 举报
回复
在MY.INI里面把所有的default-character-set都改成
default-character-set=gbk,然后重启mysql就可以了。
yangxiao_jiang 2008-05-06
  • 打赏
  • 举报
回复
你先
set names=gbk;
然后再执行insert看看

56,678

社区成员

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

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