Страницы

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

Показаны сообщения с ярлыком pymysql. Показать все сообщения
Показаны сообщения с ярлыком pymysql. Показать все сообщения

четверг, 2 апреля 2020 г.

Как хранить смайлики в MySQL?

#mysql #python #python_3x #mysqlconnector #pymysql

                    
При попытке загрузить смайлик в БД, пишет: "1366 (HY000): Incorrect string value:
'\xF0\x9F\x98\x89' for column 'last_name' at row 1"

Нашел вариант про utf8mb4. Перевел сервер,БД,таблицы и поля в utf8mb4, все равно ошибка.

Если в Python при соед. указываю charset = utf8mb4, то получаю ошибку: "1273 (HY000):
Unknown collation: 'utf8mb4_0900_ai_ci'".

Нашел единственный вариант, который сработал это в Python указать: 

cursor.execute('SET NAMES utf8mb4')
cursor.execute("SET CHARACTER SET utf8mb4")
cursor.execute("SET character_set_connection=utf8mb4")


Тогда всё работает. Но тут неудобно везде писать эти три строки, возможно ли их как-то
прописать в настройках mysql?

Уже на самом деле запутался...
P.S.
Версия сервера: 5.7.21-0ubuntu0.16.04.1 
    


Ответы

Ответ 1



Оказалось, что... Python3 mysql.connector версии 8.0.6 не поддерживает utf8mb4. Переустановил на » mysql.connector.version '2.1.7' - работает.

воскресенье, 9 июня 2019 г.

Как хранить смайлики в MySQL?

При попытке загрузить смайлик в БД, пишет: "1366 (HY000): Incorrect string value: '\xF0\x9F\x98\x89' for column 'last_name' at row 1"
Нашел вариант про utf8mb4. Перевел сервер,БД,таблицы и поля в utf8mb4, все равно ошибка.
Если в Python при соед. указываю charset = utf8mb4, то получаю ошибку: "1273 (HY000): Unknown collation: 'utf8mb4_0900_ai_ci'".
Нашел единственный вариант, который сработал это в Python указать:
cursor.execute('SET NAMES utf8mb4') cursor.execute("SET CHARACTER SET utf8mb4") cursor.execute("SET character_set_connection=utf8mb4")
Тогда всё работает. Но тут неудобно везде писать эти три строки, возможно ли их как-то прописать в настройках mysql?
Уже на самом деле запутался... P.S. Версия сервера: 5.7.21-0ubuntu0.16.04.1


Ответ

Оказалось, что... Python3 mysql.connector версии 8.0.6 не поддерживает utf8mb4. Переустановил на » mysql.connector.version '2.1.7' - работает.