当使用mysql数据库时,作为纯正的爱国者(实质是英语看不懂),当然会使用中文存储一些数据,但是默认情况下存储的中文是 ??????
这种外星文文字,这是要搞什么?
因此如何修改数据库中的编码格式设置呢?
数据库编码格式的查看
- 登陆数据库
$ mysql -uroot -p
- 通过下面命令查看mysql的编码格式;
MariaDB [(none)]> show variables like 'character_set_%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
临时修改数据库的编码格式
- 修改除了character_set_filesystem之外的其他变量的编码格式为utf;
MariaDB [(none)]> set character_set_server='utf8';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> set character_set_database = 'utf8';
Query OK, 0 rows affected (0.00 sec)
- 但是,很坑的是,当重启服务后,刚才的设置就直接失效,也是挺崩溃的;大招在下面.
永久修改数据库的编码格式
配置mysql的配置文件,配置文件在/etc/my.cnf.d/目录,设置编码格式:
第一个文件修改: /etc/my.cnf.d/client.cnf
7 [client]
8 default-character-set=utf8
- 第二个文件修改: /etc/my.cnf.d/server.cnf
11 # this is only for the mysqld standalone daemon
12 [mysqld]
13 character-set-server=utf8
- 上面设置完成,看似很完美,但是重启mariadb服务后,character_set_database并没有进行修改,因此,为了一步到位,直接设置character_set_database编码格式为utf8,如下:
MariaDB [(none)]> set character_set_database = 'utf8';
Query OK, 0 rows affected (0.00 sec)
一切ok,终于搞定!