Change MySQL default character set to UTF-8 in my.cnf?

前端 未结 18 954
一个人的身影
一个人的身影 2020-11-22 01:55

Currently we are using the following commands in PHP to set the character set to UTF-8 in our application.

Since this is a bit of overhead, we\'d like to set this a

相关标签:
18条回答
  • 2020-11-22 02:05

    For the recent version of MySQL,

    default-character-set = utf8
    

    causes a problem. It's deprecated I think.

    As Justin Ball says in "Upgrade to MySQL 5.5.12 and now MySQL won’t start, you should:

    1. Remove that directive and you should be good.

    2. Then your configuration file ('/etc/my.cnf' for example) should look like that:

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

    4. For making sure, your MySQL is UTF-8, run the following queries in your MySQL prompt:

      • First query:

         mysql> show variables like 'char%';
        

        The output should look like:

         +--------------------------+---------------------------------+
         | 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/|
         +--------------------------+---------------------------------+
        
      • Second query:

         mysql> show variables like 'collation%';
        

        And the query output is:

         +----------------------+-----------------+
         | Variable_name        | Value           |
         +----------------------+-----------------+
         | collation_connection | utf8_general_ci |
         | collation_database   | utf8_unicode_ci |
         | collation_server     | utf8_unicode_ci |
         +----------------------+-----------------+
        
    0 讨论(0)
  • 2020-11-22 02:07

    To set the default to UTF-8, you want to add the following to my.cnf

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

    If you want to change the character set for an existing DB, let me know... your question didn't specify it directly so I am not sure if that's what you want to do.

    0 讨论(0)
  • 2020-11-22 02:07

    On Fedora 21

    $ vi /etc/my.cnf
    

    Add follow:

    [client]
    default-character-set=utf8
    
    [mysql]
    default-character-set=utf8
    
    [mysqld]
    init_connect='SET collation_connection = utf8_unicode_ci'
    init_connect='SET NAMES utf8'
    character-set-server=utf8
    collation-server=utf8_unicode_ci 
    skip-character-set-client-handshake
    

    Save and exit.

    Final remember restart service mysqld with service mysqld restart.

    0 讨论(0)
  • 2020-11-22 02:08

    This question already has a lot of answers, but Mathias Bynens mentioned that 'utf8mb4' should be used instead of 'utf8' in order to have better UTF-8 support ('utf8' does not support 4 byte characters, fields are truncated on insert). I consider this to be an important difference. So here is yet another answer on how to set the default character set and collation. One that'll allow you to insert a pile of poo (

    0 讨论(0)
  • 2020-11-22 02:09

    Note: my.cnf file is located at /etc/mysql/

    After adding these lines:

    [mysqld]
    collation-server = utf8_unicode_ci
    init-connect='SET NAMES utf8'
    character-set-server = utf8
    skip-character-set-client-handshake
    
    [client]
    default-character-set   = utf8
    
    [mysql]
    default-character-set   = utf8
    

    Don't forget to restart server:

    sudo service mysql restart
    
    0 讨论(0)
  • 2020-11-22 02:09

    The directive has changed to character-set-system=utf8

    http://dev.mysql.com/doc/refman/5.6/en/charset-configuration.html

    0 讨论(0)
提交回复
热议问题