Страницы

Поиск по вопросам

вторник, 11 июня 2019 г.

Кодировочка mariadb

Есть "замечательный" символ "🐉". И при попытке Insert его в таблицу получается, вот это:
ERROR 1300 (HY000): Invalid utf8mb4 character string: '\xF0\x9F\x90\x89'
Какая кодировка нужна?


Ответ

Подозреваю, что это ошибка на "стороне клиента".
Попробуйте:
SET NAMES utf8mb4;

MariaDB под рукой нет, вот как ведёт себя mysql:
mysql> describe Storage; +-------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+-------+ | p | varchar(255) | NO | PRI | NULL | | | val | longtext | NO | | NULL | | +-------+--------------+------+-----+---------+-------+ 2 rows in set (0,00 sec)
mysql> INSERT INTO Storage VALUES('Dragon', '🐉'); ERROR 1366 (HY000): Incorrect string value: '\xF0\x9F\x90\x89' for column 'val' at row 1 mysql> SET Names utf8mb4; Query OK, 0 rows affected (0,00 sec)
mysql> INSERT INTO Storage VALUES('Dragon', '🐉'); Query OK, 1 row affected (0,10 sec)
mysql> UPDATE Storage SET p = '🐉'; Query OK, 1 row affected (0,20 sec) Rows matched: 1 Changed: 1 Warnings: 0
mysql> SELECT * FROM Storage; +------+------+ | p | val | +------+------+ | 🐉 | 🐉 | +------+------+ 1 row in set (0,00 sec)

Комментариев нет:

Отправить комментарий