В 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;