Изменить набор символов MySQL по умолчанию на UTF-8 в my.cnf?


334

В настоящее время мы используем следующие команды в 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

Это правильный способ справиться с этим?


19
Обратите внимание, что лучшим вариантом по умолчанию будет utf8mb4реальный UTF-8 с полной поддержкой Unicode. См. Как поддерживать полный Unicode в базах данных MySQL .
— Матиас Биненс

@ Не могли бы вы возразить, чтобы это изменилось так, чтобы utf8mb4это создавало опасный прецедент?
— Эван Кэрролл

Ответы:


424

Чтобы установить значение по умолчанию UTF-8, вы хотите добавить следующее в 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

Если вы хотите изменить набор символов для существующей БД, дайте мне знать ... ваш вопрос не указал это напрямую, поэтому я не уверен, что именно это вы и хотите сделать.


18
Вышеуказанные настройки my.cnf работали и для меня. Кроме того, мне нужно было убедиться, что таблица установлена ​​правильно, например, ALTER TABLE TableCONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
— Крис Ливдаль

8
Не работает для MySQL 5.5. Я использовал: <br/> [mysqld] # Изменения для utf-8 collation-server = utf8mb4_unicode_ci init-connect = 'SET NAMES utf8mb4' набор символов-серверов = utf8mb4 и utf8mb4 в других местах, как упомянуто выше.
— Champ

12
На Ubuntu 12.04 это работало для меня - если я убрал первую строку после [mysqld].
— Брэндон Бертельсен

4
Похоже, набор символов по умолчанию больше не разрешен в разделе [mysqld]
— Марсбард

4
Обратите внимание: если вам нужен UTF-8, не используйте utf8кодировку MySQL . Используйте utf8mb4вместо этого.
— Матиас Биненс,

255

Для последней версии MySQL,

default-character-set = utf8

вызывает проблему. Это устарело, я думаю.

Как сказал Джастин Болл в « Обновлении до 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 |
       +----------------------+-----------------+
      

Ваша первая строка max_allowed_packet = 64M связана с этой проблемой UTF8 каким-либо образом?
— Малхал

У меня есть character_set_filesystem | utf8. Я не уверен, это нормально?
— дядя Лем

1
Пробовал на MariaDB v5.5 и все работает, спасибо! mysql Ver 15.1 Distrib 5.5.35-MariaDB, for debian-linux-gnu (x86_64) using readline 5.1
— сент

Я думаю, вам не нужно удалять default-character-set, вместо этого вы можете поменять на loose-default-character-set = utf8- то есть на префикс «свободный». Это mysqlbinlogрадует, если вам нужно его использовать - google для: mysqlbinlog : "Свободный набор символов по умолчанию" .
— КаджМагнус,

Это init-connect='SET NAMES utf8'действительно необходимо? Если нет, мы определенно можем обойтись без него для производительности.
— datasn.io

56

На этот вопрос уже есть много ответов, но Матиас Биненс упомянул, что вместо utf8 следует использовать utf8mb4, чтобы иметь лучшую поддержку UTF-8 (utf8 не поддерживает 4-байтовые символы, поля усекаются при вставке ). Я считаю это важным отличием. Итак, вот еще один ответ о том, как установить набор символов по умолчанию и сопоставление. Тот, который позволит вам вставить кучу какашек (💩).

Это работает на MySQL 5.5.35.

Обратите внимание, что некоторые настройки могут быть необязательными. Поскольку я не совсем уверен, что ничего не забыл, я сделаю этот ответ в вики сообщества.

Старые настройки

mysql> SHOW VARIABLES LIKE 'char%'; 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     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | utf8_general_ci   |
| collation_database   | latin1_swedish_ci |
| collation_server     | latin1_swedish_ci |
+----------------------+-------------------+
3 rows in set (0.00 sec)

конфиг

# 💩 𝌆
# UTF-8 should be used instead of Latin1. Obviously.
# NOTE "utf8" in MySQL is NOT full UTF-8: http://mathiasbynens.be/notes/mysql-utf8mb4

[client]
default-character-set = utf8mb4

[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

[mysql]
default-character-set = utf8mb4

Новые настройки

mysql> SHOW VARIABLES LIKE 'char%'; SHOW VARIABLES LIKE 'collation%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8mb4                    |
| character_set_connection | utf8mb4                    |
| character_set_database   | utf8mb4                    |
| character_set_filesystem | binary                     |
| character_set_results    | utf8mb4                    |
| character_set_server     | utf8mb4                    |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

+----------------------+--------------------+
| Variable_name        | Value              |
+----------------------+--------------------+
| collation_connection | utf8mb4_general_ci |
| collation_database   | utf8mb4_unicode_ci |
| collation_server     | utf8mb4_unicode_ci |
+----------------------+--------------------+
3 rows in set (0.00 sec)

символьная_система всегда utf8 .

Это не повлияет на существующие таблицы, это просто настройка по умолчанию (используется для новых таблиц). Следующий код ALTER может использоваться для преобразования существующей таблицы (без обходного пути восстановления дампа):

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

Редактировать:

На сервере MySQL 5.0: character_set_client, character_set_connection, character_set_results, collation_connection остаются в latin1. Выдача SET NAMES utf8(utf8mb4 не доступны в этой версии) устанавливает те в utf8 , а также.


Предупреждение : если у вас была таблица utf8 со столбцом индекса типа VARCHAR (255), в некоторых случаях ее нельзя преобразовать, поскольку превышена максимальная длина ключа ( Specified key was too long; max key length is 767 bytes.). Если возможно, уменьшите размер столбца с 255 до 191 (потому что 191 * 4 = 764 <767 <192 * 4 = 768). После этого таблицу можно преобразовать.


Я следил за вашими настройками, но нахожу character_set_databaseвсе еще utf8и collation_databaseесть utf8_bin`. Я что-то пропустил?
— Стюарт

Нашел то, что я пропустил. Эти 2 параметра устанавливаются при создании самой базы данных. Смотрите этот вопрос; stackoverflow.com/questions/22572558/…
— Стюарт

1
добавить character-set-client-handshake = FALSEв раздел [mysqld], чтобы он всегда использовал кодировку по умолчанию, даже если вы допустите ошибку на прикладном уровне
— Lukas Liesis

привет, я пробовал это решение, но все еще не могу показать character_set_client | utf8mb4. это utf8. просто character_set_database utf8mb4 и character_set_server utf8mb4 являются другими неизменными. Пожалуйста, помогите мне
— Бхавин Чаухан

@ baic6 Я предлагаю добавить примечание, объясняющее, почему только индексированные столбцы могут вызвать проблему. Ограничение в 767 байтов только для индексированных столбцов, так как ограничение для «ключей». В целом, для неиндексированных столбцов это не применяется. Если столбец имеет значение с максимальной длиной байта, скажем, 255 символов и максимум 3 байта utf8, ему все равно потребуется только 255 * 3 байта, utf8mb4 в этих случаях будет использовать только 3 байта, так как эти символы в utf8mb4 также нужно всего 3 байта. То есть, если символ, который не помещается в utf8, не был сохранен в столбце, в этом случае информация уже потеряна.
— Сэм

55

На MySQL 5.5 у меня есть в my.cnf

[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

Результат

mysql> show variables like "%character%";show variables like "%collation%";

+--------------------------+----------------------------+
| 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/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_unicode_ci |
| collation_database   | utf8_unicode_ci |
| collation_server     | utf8_unicode_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)

2
Что skip-character-set-client-handshakeименно и при каких обстоятельствах требуется?
— Саймон Ист

3
@Simon, при использовании show variables like "%collation%";я видел 'collation_connection' как utf8_general_ciи collation_database и collation_server как utf8_unicode_ci. Добавление строки skip-character-set-client-handshakeизменило общую запись на юникод, поэтому все три были согласованы.
— Вон

2
На MySQL 5.6, skip-character-set-client-handshake не делает то, что сказал @Vaughany. Любое предложение?
— Ababneh A

4
Он skip-character-set-client-handshakeсделал это для меня (наряду с «набором символов» и «сервером сравнения», конечно же, в Debian 7). С init_connectне имеет значения с или без skipи кажутся излишними. +1 и спасибо.
— Джефф

3
skip-character-set-client-handshake игнорирует информацию набора символов, отправленную клиентом. Это хорошо для форсирования определенного набора символов во время общения, но если клиент ожидает чего-то другого, это может привести к проблемам. Я бы сказал, что лучше указать это на клиенте (в вашем приложении).
— 0b10011

31

Примечание: файл my.cnf находится по адресу/etc/mysql/

После добавления этих строк:

[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

Не забудьте перезапустить сервер:

sudo service mysql restart

2
Примечание: это меняет настройки по умолчанию; это не меняет кодировку для любых существующих столбцов.
— Рик Джеймс

24

NijaCat была близка, но указала на перебор:

Чтобы установить значение по умолчанию UTF-8, вы хотите добавить следующее в my.cnf

[client]
default-character-set=utf8

[mysqld]
default-character-set = utf8

Затем, чтобы проверить:

mysql> show variables like "%character%";show variables like "%collation%";

+--------------------------+----------------------------+
| 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/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database   | utf8_general_ci |
| collation_server     | utf8_general_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)

5
Хороший ответ. Возможно, краткое объяснение о том, какие части являются избыточными, поможет людям решить, что именно они хотят в своей конфигурации.
— Майк Самуэль

@Derek, что [mysql] default-character-set=utf8тогда?
— Pacerier

1
Группа опций [client] уже устанавливает опции для всех клиентов MySQL, которые читают файл my.cnf. Группа [mysql] устанавливает параметры только для двоичного файла «mysql», в частности. Если вы хотите установить параметр mysql, который не применяется к другим клиентам, целесообразно использовать эту группу, но установка одного и того же значения параметра в обоих местоположениях является излишней. dev.mysql.com/doc/refman/5.6/en/option-files.html
— Дерек

@ Майк Сэмюэль, установка набора символов по умолчанию для utf8 уже подразумевает стандартный режим сортировки utf8_general_ci. С другой стороны, "init-connect = 'SET NAMES utf8'" является несколько интересной идеей, поскольку она пытается заставить всех клиентов, подключающихся к серверу, использовать utf8, но это применяется непоследовательно в зависимости от привилегий подключения подключающегося Пользователь и я подозреваю, что некоторые подключающиеся сторонние клиенты могут быть сбиты с толку, когда сервер переопределяет запрошенную ими кодировку. dev.mysql.com/doc/refman/5.6/en/charset-applications.html
— Дерек

Для [mysqld]использования character-set-serverвместоdefault-character-set
— Рик Джеймс

23

Я также обнаружил, что после установки default-character-set = utf8под [mysqld]заголовком MySQL 5.5.x не запускается под Ubuntu 12.04 (Precise Pangolin).


16
Это ошибка MySQL # 52047 . Под [mysqld], вы должны использовать character-set-serverвместо default-character-set. (Очень запутанно, я согласен!)
— Матиас Биненс

Да. Устаревший в 5.0; снято в 5.5.
— Рик Джеймс

22

MySQL v5.5.3 и выше:

Просто добавьте три строки только в разделе [mysqld]:

[mysqld]
character-set-server = utf8
collation-server = utf8_unicode_ci
skip-character-set-client-handshake

Примечание: В том числе skip-character-set-client-handshakeздесь отпадает необходимость включения как init-connectв [mysqld]и default-character-setв [client]и [mysql]секциях.


1
Ух ты, так много повторяющихся ответов на этот вопрос, и все же это кажется самым простым. У меня тоже работает на v5.5.44.
— Джастин Уотт

9

Под Xubuntu 12.04 я просто добавил

[mysqld]
character_set_server = utf8

в /etc/mysql/my.cnf

И результат

mysql> show variables like "%character%";show variables like "%collation%";
+--------------------------+----------------------------+
| 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/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database   | utf8_general_ci |
| collation_server     | utf8_general_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)

Также посмотрите на http://dev.mysql.com/doc/refman/5.6/en/charset-server.html


Вам также нужно [client] default-character-set = utf8, иначе, когда вы используете mysql в командной строке, он не будет использовать utf8, потенциально разрушая любые резервные копии, которые вы передаете в файл.
— Малхал

9

Все настройки, перечисленные здесь, являются правильными, но вот наиболее оптимальное и достаточное решение:

[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
character-set-server = utf8
collation-server = utf8_unicode_ci

[client]
default-character-set = utf8

Добавьте это к /etc/mysql/my.cnf.

Обратите внимание, я выбираю тип сортировки utf8_unicode_ci из-за проблем с производительностью.

Результат:

mysql> SHOW VARIABLES LIKE 'character%';
+--------------------------+----------------------------+
| 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/share/mysql/charsets/ |
+--------------------------+----------------------------+

mysql> SHOW VARIABLES LIKE 'collation%';
+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_unicode_ci |
| collation_database   | utf8_unicode_ci |
| collation_server     | utf8_unicode_ci |
+----------------------+-----------------+

И это когда вы подключаетесь как не-СУПЕР пользователь !

Например, разница между подключением как SUPER и не-SUPER пользователя (конечно, в случае сортировки utf8_unicode_ci ):

пользователь с SUPER прив .:

mysql> SHOW VARIABLES LIKE 'collation%';
+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_general_ci | <---
| collation_database   | utf8_unicode_ci |
| collation_server     | utf8_unicode_ci |
+----------------------+-----------------+

пользователь с не SUPER прив .:

mysql> SHOW VARIABLES LIKE 'collation%';
+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_unicode_ci |
| collation_database   | utf8_unicode_ci |
| collation_server     | utf8_unicode_ci |
+----------------------+-----------------+

Я написал исчерпывающую статью, подробно объясняющую, почему вы должны использовать тот или иной вариант. Рассматриваются все типы наборов символов и сопоставлений : для сервера, для базы данных, для соединения, для таблицы и даже для столбца.

Надеюсь это и статья поможет прояснить неясные моменты.


3
Я хотел бы прочитать вашу связанную статью, но не могу читать по-русски, и Google Translate не очень полезен для технических текстов. Из того, что я могу сказать, хотя это было бы очень интересно. Не могли бы вы рассмотреть возможность размещения английской версии?
— Мартейн Химельс

2
Не могли бы вы объяснить, какой параметр не устанавливает параметры сортировки пользовательских соединений SUPER? (и есть ли решение)
— KCD

@gahcep, вы заявили, что используете utf8_unicode_ciиз-за проблем с производительностью, тогда почему бы не использовать utf8_binвместо этого?
— Pacerier

Привет, Paceriar. Хорошая точка зрения. Теперь я не уверен, правильно ли я выбрал использование utf8_unicode_ci. Никогда не тратил время на тестирование производительности.
— Гахчеп


4

Версии MySQL и дистрибутивы Linux могут иметь значение при настройке конфигурации.

Тем не менее, изменения в [mysqld]разделе приветствуется.

Я хочу дать краткое объяснение ответа tomazzlender:

[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

[ТуздЫ]

Это изменит collation_connection на utf8_unicode_ci

init_connect='SET collation_connection = utf8_unicode_ci'

Использование SET NAMES:

init_connect='SET NAMES utf8'

НАЗВАНИЯ SET влияют на трех символов, то есть:

character_set_client
character_set_results
character_set_connection

Это установит character_set_database & character_set_server

character-set-server=utf8

Это повлияет только на collation_database & collation_server

collation-server=utf8_unicode_ci

Извините, я не совсем уверен, для чего это нужно. Я не использую это однако:

skip-character-set-client-handshake

В документации отмечается, что character_set_serverне следует устанавливать вручную.
— Брайан

Так что же такое современный подход? Мы можем явно передать character setпри установлении соединения с базой данных, однако выглядит немного раздражает.
— Лиханг Ли

На самом деле я допустил ошибку. Документация говорит, что character_set_database не должен быть установлен динамически. Не упоминает character_set_server. Тем не менее, я не уверен, что вам нужно беспокоиться о character_set_server, так как я думаю, что это влияет только на значение по умолчанию для вновь созданной базы данных?
— Брайан

Как я уже упоминал выше и я провел эксперимент только сейчас, character_set_serverв [mysqld]разделе затронут character_set_databaseи character_set_server. Теперь я думаю, что хорошей практикой является явное указание того, character setчто вы хотите использовать при создании базы данных, таблицы и соединения с базой данных. Честно говоря, документация mysqlне так легко понять. Знаете ли вы, есть ли общий способ выполнить все настройки character setи collationнастройки в MySQL?
— Лиханг Ли

4

На Fedora 21

$ vi /etc/my.cnf

Добавить подписку:

[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

Сохранить и выйти.

Последнее помните, перезапустите службу mysqld с service mysqld restart.


1

MySQL 5.5, все что вам нужно это:

[mysqld]
character_set_client=utf8
character_set_server=utf8
collation_server=utf8_unicode_ci

collation_server необязательно.

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/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

1

Если у вас возникли проблемы с подтверждением поддержки набора символов клиента с помощью MySQL Workbench, имейте в виду следующее замечание:

Внимание! Все соединения, открываемые MySQL Workbench, автоматически устанавливают для клиентского набора символов utf8. Изменение вручную набора символов клиента, такое как использование SET NAMES ..., может привести к тому, что MySQL Workbench будет некорректно отображать символы. Для получения дополнительной информации о клиентских наборах символов см. Наборы символов соединения и сопоставления.

Таким образом, я не смог переопределить наборы символов MySQL Workbench с изменениями my.cnf. например, «установить имена utf8mb4»


1

Если вас смущают ваши настройки для клиента и conn сбрасывается после перезапуска службы MySQL. Попробуйте эти шаги (которые работали для меня):

  1. vi /etc/my.cnf
  2. добавить содержимое удара и :wq [client] character-sets-dir=/usr/local/mysql/share/mysql/charsets
  3. перезапустите mysql и войдите в систему mysql, используйте базу данных, введите команду ввода status;, вы найдете набор символов для «client», а для «conn» установлено значение «utf8».

Проверьте ссылку для получения дополнительной информации.


0

Вы можете сделать это так, как оно работает, и если это не работает, вам нужно перезапустить mysql.


-1

Изменить персонаж MySQL:

клиент

default-character-set=utf8

туздЫ

character_set_server=utf8

Мы не должны писать default-character-set=utf8в mysqld, потому что это может привести к ошибке вроде:

начало: задание не удалось запустить

Наконец:

 +--------------------------+----------------------------+
 | 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/share/mysql/charsets/ |
 +--------------------------+----------------------------+
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.