В MySQL, что я помещаю внутри my.cnf, чтобы все таблицы были UTF-8, который работает с emojis по умолчанию?

Я бы хотел, чтобы каждая таблица и база данных (которая была создана) были utf-8, которая работает с emojis. Я понимаю, что есть несколько переменных, которые мне нужно определить внутри my.cnf:

init_connect='SET collation_connection = ??? '
init_connect='SET NAMES ???'
character-set-server = ???
collation-server = ???

Однако я не уверен, что положить в ???. Что я помещаю внутри my.cnf?

Ответы

Ответ 1

Эта статья может помочь: https://mathiasbynens.be/notes/mysql-utf8mb4#utf8-to-utf8mb4

В нем подробно объясняется, как переключиться на utf8mb4 для поддержки полного юникода, что позволяет emojis использовать следующую конфигурацию:

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

Ответ 2

В дополнение к изменению на utf8mb4, как предлагает @eol, может быть и больше.

Если у вас уже есть таблицы с столбцами utf8; do ALTER TABLE .. CONVERT TO CHARACTER SET utf8mb4.

Когда вы подключаетесь, обязательно установите UTF-8, если у клиента есть способ, отличный от mysql, или используйте SET NAMES utf8mb4.

Имейте в виду, что root игнорирует init-connect. У вас должен быть пользователь root, не являющийся пользователем root.

Ответ 3

Поддержка полного Unicode в базах данных MySQL

  • Для базы данных: ALTER DATABASE DATABASE_NAME CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

  • Для таблицы: ALTER TABLE TABLE_NAME CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

  • Для столбца: ALTER TABLE TABLE_NAME CHANGE COLUMN_NAME COLUMN_NAME VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;