您的位置:首页 > 运维架构 > Linux

解决linux中mysql乱码问题

2017-02-22 07:17 281 查看
当把windows下的mysql文件拖到虚拟机ubuntu下时候,再导入到ubuntu下的mysql中就会出现错误,因为从windows下传过来的文件会被转码程gbk,而ubuntu下的mysql编码为utf8格式,所以倒入不进去。可以在进入mysql后运行status查看。

mysql> status

--------------

mysql  Ver 14.14 Distrib 5.1.66, for pc-linux-gnu (i686) using  EditLine wrapper

Connection id: 4

Current database: mydb

Current user: root@localhost

SSL: Not in use

Current pager: stdout

Using outfile: ''

Using delimiter: ;

Server version: 5.1.66-log Source distribution

Protocol version: 10

Connection: Localhost via UNIX socket

Server characterset: utf8

Db     characterset: utf8

Client characterset: utf8

Conn.  characterset: utf8

UNIX socket: /tmp/mysql.sock
Uptime: 8 min 33 sec

在网上查找方法,发现自己安装的时候仅仅是./configure 的时候没有制定字符集,于是果断重新编译 

step1:   ./configure --with-charset=utf8 --with-collation=utf8_bin --with-extra-charsets=big5,ascii,gb2312,gbk,utf8,latin1 

//默认的字符集缺省为latin1。 

//其中,utf8对应可用的collation值为:utf8_bin、utf8_general_ci、utf8_unicode_ci 

//extra支持也可以使用 "--with-extra-charsets=all"。

Step2:在make步骤之前,修改config.h头文件,查找utf8、gbk、gb2312等定义字符集变量的行,确认有如下内容(如果没有则需要手动添加),例如: 

#define HAVE_CHARSET_ascii 1 

#define HAVE_CHARSET_big5 1 

#define HAVE_CHARSET_gb2312 1 

#define HAVE_CHARSET_gbk 1 

#define HAVE_CHARSET_latin1 1 

#define HAVE_CHARSET_utf8 1 

//可是我并我没有找到config.h文件。

//一开始没有修改config.h,费了好多功夫,"mysql>"环境中使用非默认字符集时总报"Error
1115"错误: 

mysqld> set names gbk; 

ERROR 1115 (42000): Unknown character set: 'gbk' 

//后来发现在./configure完成后,config.h文件中并没有自动打开gbk、gb2312等变量定义,不得不手动修改添加。 

2、验证mysqld服务的多字符集支持 

1) 查看当前mysql数据库支持的字符集 

mysql> show character set; 

2) 查看对应字符集可用的校对规则 

mysql> show collation like 'gb%'; 

mysql> show collation like 'utf8%'; 

3) 查看当前mysql服务器使用的默认字符集状态 

mysql> status 

…… 

Server characterset: utf8 

Db characterset: utf8 

Client characterset: utf8 

Conn. characterset: utf8 

4) 在创建数据库时指定使用的默认字符集: 

mysql> create database testdb default character set utf8; 

mysql> show create database testdb; //验证数据库建立信息 

5) 在创建数据表时指定使用的默认字符集: 

mysql> create table testdb.tb1 ( id int(10) unsigned NOT NULL AUTO_INCREMENT,name varchar(15) NOT NULL default '',PRIMARY KEY (id) ) ENGINE=MyISAM DEFAULT CHARACTER SET gb2312; 

mysql> show create table testdb.tb1; //验证数据表建立信息 

6) 在mysql>客户端环境中设置使用的默认字符集 

mysql> set NAMES utf8; 

接着make && make install 后再重启一下,再导入数据库文件就没有错误了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: