一般我们会将mysql部署在linux服务器上,而在执行脚本时,又无法通过SQLyog等客户端工具进行连接,如果要执行脚本,只能通过命令行的方式执行。

        此时如果我们简单的把脚本复制过去执行,可能会出现中文乱码的问题,这是因为mysql的客户端默认使用的字符集是latin1,而其它客户端如SQLyog、java程序等一般会使用utf8的方式。为避免乱码的问题,我们可以通过以下两种方式执行sql脚本:

查看mysql的字符集

mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

可见,character_set_client、character_set_connection、character_set_results默认使用的字符集是latin1

一、通过souce命令

1、连接mysql
  mysql -uroot -p123456 test

2、设置此客户端的字符集
  set names utf8;

3、执行脚本
  source /var/data/1.sql


二、修改客户端默认字符集后,再执行

1、在/etc/mysql/mysql.conf.d/mysqld.cnf配置文件中添加:default-character-set=utf8

[root@test]# cat mysql.cnf 
[mysql]
default-character-set=utf8

再查看字符集,已修改为了utf8

mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.01 sec)

2、重启mysql

3、执行脚本

   mysql -uroot -p123456 test < 1.sql

注意:此种方式可能数据库会被删除,一定要备份,在数据库安装之出使用,切记!!!!!!!

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐