linux utf8转gbk_linux环境安装mysql和使用中的常见问题

本文针对的环境是 centos 6.8 mysql 5.6.24版本

1.执行命令 service msyql status查看mysql运行状态时报错:MySQL is not running, but lock file

解决:移除锁文件,并把该lock文件位置设定;

rm /var/lock/subsys/mysql 

lock file 在 /etc/rc.d/init.d/mysql 中设定修改lockdir

vi /etc/rc.d/init.d/mysql
6718b0224d5ccf5b73e94852ba17c20e.png

2.重启mysql服务的时候 报错:

Starting MySQL........The server quit without updating PID [失败]/usr/local/mysql/data/mysql/hadoop102.pid).

解决:直接找到对应的文件进行查看pid文件,这个hadoop102.pid其实就是一个错误日志文件,也有可能叫hadoop102.err(hadoop102这里是你linux主机的名称)

cat /usr/local/mysql/data/mysql/hadoop102.pid

当时我遇到的具体报错信息如图:

a8ba4c0bd53642ff5bded4a18e40d9de.png

原因:其实这个是我当时设定默认编码格式的弄错了;

打开 vi /usr/my.cnf 文件(有的默认配置文件在/etc/my.cnf)

注释掉 default-character-set=utf8或者更改位置,写在client下就行

service mysql start 重启就好使了

针对设定编码格式的补充:

[client]下添加:default-character-set=utf8

[mysqld]下添加:character_set_server=utf8

3.启动mysql 服务的时候 报错 can't open the mysql plugin table

解决:其实就是启动找不到mysql 的数据文件。 mysql 的数据文件默认位置为 /var/lib/mysql

查看自己配置文件 vi /usr/my.cnf 文件 datadir的配置

我自己配置的为 如图

4c1c8f47d2f951aed719f6b0b40ee460.png

因此针对这个问题,可以有两种解决方式:

1)将/var/lib/mysql 数据文件全部移到/usr/local/mysql/data 下

mv /var/lib/mysql /usr/local/mysql/data

2)修改my.cnf文件中,数据的存放路径,同时需要修改Mysql启动文件 /etc/rc.d/init.d/mysql 中datadir

vi my.cnf 添加如下一行

d10d520ea8e624a338e98d88bc30ce34.png

修改MySQL启动脚本/etc/rc.d/init.d/mysql

vi /etc/rc.d/init.d/mysql

添加 datadir=/usr/local/mysql/data/mysql ,如图

2acc6e8f994fa8f9a040961eafc4a327.png

4. 在创建表时 报错[Err] 1071 - Specified key was too long; max key length is 767 byte

原因:MySQL的varchar主键只支持不超过768个字节 或者 768/2=384个双字节 或者 768/3=256个三字节的字段 ,而 GBK是双字节的,UTF-8是三字节的。脚本中有三个索引建立在了编码为GBK,varchar(500)的字段上,所以导致超过限定的长度。

解决:修改默认编码为utf8

[client]下添加:default-character-set=utf8

[mysqld]下添加:character_set_server=utf8

97472578c64b3e975cf7db6908cbde80.png

但是需要注意的是,在更改编码格式之前建立的数据库会保持创建时的编码格式,于是在更改数据库编码格式后,需要重新建立数据库!

5.在使用socket连接方式 报错:mysql Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

1)可以修改smysql.sock 存放目录(my.cnf有的机器也在/etc/my.cnf下),想查找执行 whereis my.cnf

vi /usr/my.cnf 

在【mysqld】下添加 socket =/usr/local/mysql/data/mysql/mysql.sock

然后重启mysql 服务

service msyql restart

2)连接时指定 socket目录

mysql -uroot -p123456 --socket='/usr/local/mysql/data/mysql/mysql.sock'

3)通过mysql.sock建立软连接在执行socket连接

ln -s /usr/local/mysql/data/mysql/mysql.sock /var/lib/mysql/mysql.sock

将我设定 的socket文件位置,在/var/lib/mysql下放置一份,以供读取

结果如图:

48df2e612cac2fc710f7a0b186aca514.png

版权声明:本文为博主原创文章,转载请注明本页地址。https://blog.csdn.net/l1994m/article/details/88198640

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值