mysql 执行脚本的正确姿势
一般我们会将mysql部署在linux服务器上,而在执行脚本时,又无法通过SQLyog等客户端工具进行连接,如果要执行脚本,只能通过命令行的方式执行。此时如果我们简单的把脚本复制过去执行,可能会出现中文乱码的问题,这是因为mysql的客户端默认使用的字符集是latin1,而其它客户端如SQLyog、java程序等一般会使用utf8的方式。为避免乱码的问题,我们可以通过以下两种方式执行sql脚本:查
·
一般我们会将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
注意:此种方式可能数据库会被删除,一定要备份,在数据库安装之出使用,切记!!!!!!!
更多推荐
已为社区贡献11条内容
所有评论(0)