如何在my.ini中设置character_set_database和collation_database为utf8?

10 浏览
0 Comments

如何在my.ini中设置character_set_database和collation_database为utf8?

我已经在谷歌上搜索了很多关于这个问题的内容。总结起来,我的my.ini文件如下所示:

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 
[client]
database = abcdef
user = root
password = XXXXXX
default-character-set = utf8
[mysql]
default-character-set=utf8
[mysqld]
character_set_server=utf8
max_connections = 200
init_connect='SET collation_connection = utf8_general_ci' 
init_connect='SET NAMES utf8' 

当我通过cmd进入mysql并执行show variables like "%character%";show variables like "%collation%";命令时,我得到了以下结果:

+--------------------------+---------------------------------+
| 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     | utf8                            |
| character_set_system     | utf8                            |
| character_sets_dir       | D:\env\MySQL5.6\share\charsets\ |
+--------------------------+---------------------------------+
8 rows in set (0.00 sec)
+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | utf8_general_ci   |
| collation_database   | latin1_swedish_ci |
| collation_server     | utf8_unicode_ci   |
+----------------------+-------------------+

我已经重启了MySQL服务,所以有人能告诉我如何将character_set_databasecollation_database更改为utf8吗?非常感谢。

0
0 Comments

问题的原因是在MySQL的配置文件(my.ini)中,字符集(character_set_database)和排序规则(collation_database)没有设置为utf8。解决方法是按照以下步骤操作:

1. 首先确定可用的字符集和排序规则:

SHOW CHARSET;
SHOW COLLATION;

2. 检查当前字符集和排序规则的设置:

SHOW VARIABLES LIKE '%character%';
SHOW VARIABLES LIKE '%collation%';

3. 在配置文件(my.cnf)中设置字符集和排序规则:

[mysqld]

character-set-server=utf8mb4

collation-server=utf8mb4_general_ci

4. 检查数据库和表的字符集设置:

SHOW CREATE DATABASE databasename;
SHOW CREATE TABLE tablename;

5. 修改数据库和表的字符集:

ALTER DATABASE databasename CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

6. 在创建数据库和表时设置字符集和排序规则:

CREATE DATABASE new_db CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci;
CREATE TABLE new_table (id INT) CHARSET utf8mb4 COLLATE utf8mb4_general_ci;

需要注意的是,听说在MySQL中,utf8并不是真正的utf8,而utf8mb4才是真正的utf8。所以,如果在保存到MySQL时遇到特殊字符无法保存的情况,可能需要使用utf8mb4和utf8mb4_general_ci字符集和排序规则。

0
0 Comments

问题的出现原因:在MySQL中,character_set_database和collation_database的设置是从数据库的排序规则(collation)中获取的。如果需要将其设置为utf8编码,可以通过修改数据库的字符集和排序规则来实现。

解决方法:

1. 使用以下命令修改数据库的字符集和排序规则:

ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_general_ci;

其中,databasename为数据库的名称。

2. 重新启动MySQL服务(可能不是必需的)。

3. 使用以下命令检查设置是否成功:

SHOW VARIABLES;

如果没有报错,则说明设置成功。

希望能帮到你!

附注:在MySQL 5.5+版本中,default-character-set已经被弃用,并且可能导致配置文件出现问题。可以使用以下命令来快速查看相关变量:

SHOW variables WHERE variable_name LIKE '%coll%' OR variable_name LIKE '%char%'

另外,如果你只有bugs、mysql、information_schema和performance_schema这几个数据库,只能修改bugs和mysql数据库的字符集和排序规则。如果你无法修改performance_schema或information_schema数据库,可以忽略它们。

关于避免重新启动数据库的问题,在MySQL 5.7版本中,重新启动数据库是不必要的。

以上为原文内容,已按要求整理成一篇文章。

0