Configurando padrões Unicode para MariaDB (ou MySQL)

É do conhecimento comum que os padrões do MySQL foram escolhidos sob forte influência de drogas, é basicamente por isso que eles são tão aleatórios e ruins. MariaDB também herda principalmente esses, devido à compatibilidade com versões anteriores. Ou talvez, você sabe, porque usar drogas enquanto programando é simplesmente divertido.

De qualquer forma, vamos consertar a utf8codificação retardada de três bytes do MySQL . Curiosidade: a abominação que o MySQL chama utf8NÃO é a conhecida codificação UTF-8; é uma variação quebrada de três bytes, incapaz de armazenar muitos caracteres Unicode comumente usados.

A correção é trivial. No arquivo de configuração, normalmente /etc/my.cnf(ou /usr/local/etc/my.cnfse instalado no OS X com Homebrew):

[client]
default-character-set = utf8mb4

[mysqld]
character
-set-server = utf8mb4

(Neste ponto, você deve ter notado que a coloração da sintaxe do Coderwall é uma droga, mas você entendeu.)

Em seguida, recarregue o servidor emitindo um comando ao longo das linhas de:

mysql.server restart

Agora, para testar as novas configurações, você pode fazer o seguinte:

mysql -u root -p

MariaDB> SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';

O resultado final deve ser:

+--------------------------+--------------------+
| 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 |
| collation_connection | utf8mb4_general_ci |
| collation_database | utf8mb4_general_ci |
| collation_server | utf8mb4_general_ci |
+--------------------------+--------------------+

Coderwall, por favor, conserte seu editor de texto / Markdown! É ruim, e você deve se sentir mal.