您的位置:首页 > 数据库 > MySQL

MySQL中不能插入中文解决办法

2015-09-05 21:14 651 查看
参考:http://blog.sina.com.cn/s/blog_48f0f4da0100cktq.html

查看表的结构:

  mysql>
show create users;

  ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that

  corresponds to your MySQL server version for the right syntax to use near 'users

  ' at line 1

  mysql> show create table users;

  +-------+-----------------------------------------------------------------------

  ------------------------------------------------------------------------------+

  | Table | Create Table

  |

  +-------+-----------------------------------------------------------------------

  ------------------------------------------------------------------------------+

  | users | CREATE TABLE `users` (

  `userid` int(11) default NULL,

  `username` char(20) character set latin1 default NULL

  ) ENGINE=InnoDB DEFAULT CHARSET=gbk |

  +-------+-----------------------------------------------------------------------

  ------------------------------------------------------------------------------+

  1 row in set (0.00 sec)

  mysql> desc users;

  +----------+----------+------+-----+---------+-------+

  | Field | Type | Null | Key | Default | Extra |

  +----------+----------+------+-----+---------+-------+

  | userid | int(11) | YES | | NULL | |

  | username | char(20) | YES | | NULL | |

  +----------+----------+------+-----+---------+-------+

  2 rows in set (0.02 sec)

  这时向表中插入中文然后有错误。

  mysql> insert into users values(88,'中文');

  ERROR 1366 (HY000): Incorrect string value: '\xD6\xD0\xCE\xC4' for column 'usern

  ame' at row 1

  mysql> insert into users values(88,'中文');

  ERROR 1366 (HY000): Incorrect string value: '\xD6\xD0\xCE\xC4' for column 'usern

  ame' at row 1

  还要更改users表的username的字符集。

  mysql> alter table users modify username char(20) character set gbk;

  ERROR 1366 (HY000): Incorrect string value: '\xC0\xEE\xCB\xC4' for column 'usern

  ame' at row 1

  mysql> alter table users modify username char(20) character set gbk;

  ERROR 1366 (HY000): Incorrect string value: '\xC0\xEE\xCB\xC4' for column 'usern

  ame' at row 1

  因为表中已经有数据,所以更改username字符集的操作没有成功

  清空users表中的数据

  mysql> truncate table users;

  Query OK, 3 rows affected (0.01 sec)

  从新更改user表中username的字符集

  mysql> alter table users modify username char(20) character set gbk;

  Query OK, 0 rows affected (0.06 sec)

  Records: 0 Duplicates: 0 Warnings: 0

  这时再插入中文字符,插入成功。

  mysql> insert into users values(88,'中文');

  Query OK, 1 row affected (0.01 sec)

  mysql> select * from users;

  +--------+----------+

  | userid | username |

  +--------+----------+

  | 88 | 中文 |

  +--------+----------+

  1 row in set (0.00 sec)

另一种方法:

进入cmd,进入mysql
用show variables查看你的字符集,character_set_server是服务器编码.要改变服务器的编码必须重新启动服务器
用mysqladmin –uroot shutdown关闭服务器,然后mysqld –C GBK启动服务器 –C是character_set_server的一个简写(可以也可以写成mysqld –character_set_server gbk)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: