Cómo usar MariaDB para almacenar texto que contiene emojis en un entorno Node.js
Recientemente cambié de PSQL a MariaDB para hacer uso de la prueba gratuita de 12 meses de Amazon, pero me encontré con un problema relacionado con los emojis. Al instalar MariaDB a través de Homebrew, el juego de caracteres inicial para el sistema será utf8mb3. Este formato no es compatible con emojis, y tratar de usar emojis en cualquier declaración devolverá un error. ¡Pero la esperanza no está perdida!
Hay 3 cosas que debes hacer:
- Actualice los conjuntos de caracteres de su sistema MariaDB
- Formatee correctamente su base de datos/tablas
- Agregue el parámetro charset a su grupo/conexión de MariaDB
Actualice los conjuntos de caracteres de su sistema MariaDB
Para verificar qué conjunto de caracteres está usando su MariaDB, conéctese a su servidor MariaDB como de costumbre…
mysql
Luego ingrese la siguiente declaración…
SHOW VARIABLES LIKE 'char%'; SHOW VARIABLES LIKE 'collation%';
Deberías ver la siguiente tabla:
Ahora, si sus valores son todos utf8mb4 y utf6mb4_unicode_ci (excepto character_sets_dir), la configuración de su sistema está lista. De lo contrario, busque el archivo my.cnf que para mí se encuentra en usr/local/etc/. Luego, actualízalo con el siguiente código:
# # This group is read both by the client and the server # use it for options that affect everything # [client-server] [client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] character-set-client-handshake = FALSE collation-server = utf8mb4_unicode_ci init-connect = 'SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci' character-set-server = utf8mb4 # # include *.cnf from the config directory # !includedir /usr/local/etc/my.cnf.d
Después de guardar este archivo, la configuración de su sistema MariaDB debe estar configurada correctamente.
Formatee correctamente su base de datos/tablas
Al crear su base de datos en la consola de MariaDB, agregue detalles del juego de caracteres…
CREATE DATABASE your_db CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
Y al hacer sus tablas, agregue detalles del conjunto de caracteres al final de la declaración:
CREATE TABLE things ( internal_thing_id SERIAL PRIMARY KEY, text_with_emojis TEXT ) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
Agregue el parámetro charset a su grupo/conexión de MariaDB
El último paso requiere una pequeña adición en nuestro proyecto Node. Dondequiera que establezca su grupo/conexión de base de datos, agregue charset: “utf8mb4” a la lista de parámetros.
const mariadb = require('mariadb');var pool = mariadb.createPool({ host: "your url", user: "your username", password: "your password", database: "your db", charset: "utf8mb4",});module.exports = pool;
¡Y YA ESTÁ LISTO! 🎉
Por favor comente si tiene algún inconveniente con esto…