在my.cnf中将MySQL的默认字符集更改为UTF-8?

14 浏览
0 Comments

在my.cnf中将MySQL的默认字符集更改为UTF-8?

目前,我们在 PHP 中使用以下命令来设置应用程序的字符集为 UTF-8

由于这是一些额外的工作,我们想在 MySQL 中将其设置为默认设置。我们可以在 /etc/my.cnf 或其他位置中做到这一点吗?

SET NAMES 'utf8'
SET CHARACTER SET utf8

我在 /etc/my.cnf 中查找默认字符集,但是没有关于字符集的任何内容。

此时,我执行了以下操作来将 MySQL 的字符集和校对变量设置为 UTF-8:

skip-character-set-client-handshake
character_set_client=utf8
character_set_server=utf8

这是正确处理此项任务的方法吗?

admin 更改状态以发布 2023年5月23日
0
0 Comments

对于最新版本的MySQL来说,

default-character-set = utf8

会引起问题。我认为这已经被弃用了。

正如Justin Ball升级到MySQL 5.5.12,现在MySQL无法启动中所说,你应该:

  1. 删除该指令,这样应该就好了。

  2. 然后你的配置文件(例如' /etc/my.cnf')应该像这样:

    [mysqld]
    collation-server = utf8_unicode_ci
    init-connect='SET NAMES utf8'
    character-set-server = utf8
    

  3. 重启MySQL。

  4. 为确保你的MySQL是UTF-8,可以在MySQL提示符中运行以下查询:

    • 第一个查询:

       mysql> show variables like 'char%';
      

      输出应该像这样:

       +--------------------------+---------------------------------+
       | Variable_name            | Value                           |
       +--------------------------+---------------------------------+
       | character_set_client     | utf8                            |
       | character_set_connection | utf8                            |
       | character_set_database   | utf8                            |
       | character_set_filesystem | binary                          |
       | character_set_results    | utf8                            |
       | character_set_server     | utf8                            |
       | character_set_system     | utf8                            |
       | character_sets_dir       | /usr/local/mysql/share/charsets/|
       +--------------------------+---------------------------------+
      

    • 第二个查询:

       mysql> show variables like 'collation%';
      

      查询输出是:

       +----------------------+-----------------+
       | Variable_name        | Value           |
       +----------------------+-----------------+
       | collation_connection | utf8_general_ci |
       | collation_database   | utf8_unicode_ci |
       | collation_server     | utf8_unicode_ci |
       +----------------------+-----------------+
      

0
0 Comments

要将默认设置为UTF-8,您需要将以下内容添加到my.cnf/my.ini中

[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
collation-server = utf8mb4_unicode_520_ci
init-connect='SET NAMES utf8mb4'
character-set-server = utf8mb4

如果您想要更改现有数据库的字符集,请告诉我...您的问题没有直接说明,因此我不确定是否是您想要做的。

编辑:由于utf8仅为UTF-8的子集,我在原始答案中用utf8mb4替换了utf8。 MySQL和MariaDB都将UTF-8称为utf8mb4。

0