改变字符集后中文乱码不生效

  1. 安装mysql后没有及时修改字符编码集,创建库的时候默认使用自带的编码集,当我们写入带有中文的数据后,在我们查询的时候才发现查出来是乱码。



mysql修改校对规则 修改mysql配置后如何生效_fedora 不在sudoers文件中

默认安装数据库后默认字符集是



2. 此时我们就需要把数据库默认的字符编码集改成utf-8




mysql修改校对规则 修改mysql配置后如何生效_fedora 不在sudoers文件中_02

我们看到默认数据库编码集是latinl,需要修改



3. 打开配置文件/etc/my.cnf在[client]、[mysqld]节点下加入下图红色字体圈出来的配置,保存退出




mysql修改校对规则 修改mysql配置后如何生效_fwrite写入文件乱码_03


4. 重启数据库让配置文件生效

命令:service mysql restart 或/etc/init.d/mysql restart

注意:此时我们在查看我们插入的语句,发现还是乱码,我们这时候就特别困惑,难道是配置文件没有生效,其实不是,配置文件以及生效了,只是我们在创建数据库是在修改编码集之前,所以修改编码集后只对在这个时间点之后创建的库生效,之前创建的库依然默认的是latinl编码集,中文依然乱码。

我相信在这里,很多新手就犯过这个错误,发现乱码了,把编码集改变了,还是乱码,查了很多资料,发现其实是我们根本就没有理解清楚,相信我说道这里大家就明白了,重新创建一个库就好了。

5. 重启MySQL后我们查字符编码集


mysql修改校对规则 修改mysql配置后如何生效_fedora 不在sudoers文件中_04


MySQL最大连接数配置后重启MySQL就失效

错误日志:Can not connect to MySQL server. Too many connections这个就说明我们业务需要的数据库连接数不够了,导致无法连接数据库
  1. mysql最大连接数是什么,简单的说mysql允许建立多少个连接,如果实际的连接数超过设置的默认值,那么我们的程序多出的连接就无法正常连接数据库,故而程序报错,影响我们的业务。
  2. 查看数据库连接数


mysql修改校对规则 修改mysql配置后如何生效_.gitignore文件不生效_05

我们看到最大错误连接数和最大连接数都是系统默认的大小


3. 通过以上查询的结果得知,这个连接数有点太小,可能在实际场景下无法满足我们的应用需求,下面我就教大家如何设置最大连接数使其不失效:

  • 很多人查看帖子,发现通过执行命令就可以实现
第一种方法:mysql>set GLOBAL max_connections=1000;  #设置mysql最大连接数注意:这个方,法数据库重启后就会失效,因为这个不会写入配置文件,所以解决不了实际的问题第二种方法:在配置文件my.cnf的[mysqld]节点加入:max_connections=1000max_connect_errors=1000注意:修改完成后要重启数据库,正常情况下我们的配置文件会生效,但是有时候由于Linux操作系统os的限制,导致无法生效
  • 终极解决配置文件不生效的办法

除了在配置文件my.cnf的[mysqld]节点加入:

max_connections=1000

max_connect_errors=1000

还要配置一下的文件:

修改/lib/systemd/system/mysql.service,在末尾添加:

LimitNOFILE=65535

修改vim,在末尾添加:

* soft nofile 65536 * hard nofile 65536
systemctl daemon-reload
service mysqld restart

点击关注发私信或评论交流文章中有问题的地方,相互学习和答疑