前言
原本要使用 Sqoop 把我 MySQL 的数据导入到 HBase 中,习惯了使用 windows 下的 MySQL 8.0 版本,但是用 Sqoop 从windows 传到 linux 下有点复杂,就索性用我自己之前没用过的 linux 下的 MySQL 5.7,结果果然一堆问题:中文数据插入失败,修改配置文件导致 mysql 启动失败...
解决办法
1、修改配置文件 my.cnf
我的配置文件在 /etc/my.cnf (我的安装路径不是那,它应该是自动把配置文件放到那里的)。
#/etc/my.cnf
[client]
default-character-set=utf8
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
#default-character-set=utf8
character-set-server=utf8
init_connect='SET NAMES utf8'
[mysql]
no-auto-rehash
default-character-set=utf8
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
可以直接复制,基本上没啥问题,不放心的可以核对一下 datadir、socket、log-file 和 log-error 的路径和原 my.cnf 中的路径是否一致。
不要随便添加内容,否则一不小心配置失败就进不去 MySQL 了。
2、重启MySQL服务
systemctl restart mysqld.service
如果你上面的配置文件中有想当然或者自由发挥的内容,那么很容易在这里报错:Job for mysqld.service failed because the control process exited with error code. See systemctl status mysqld.service and journalctl -xe for details.
查看编码信息
show variables like 'character%';
修改成功的话应该是这样的:
3、重新创建数据库
即使你完成了上一步操作,这时你向表中插入中文数据依然可能会失败,因为你的数据库编码仍然是 latin1 (默认的)。
所以一定要删除原数据库,重新创建一遍!!!
参考
参考文章:http://t.csdnimg.cn/AVUqw