Получение «1366 (HY000): неверное строковое значение:» после указания кодировки

avatar
Amon
8 апреля 2018 в 01:30
251
0
0

Извините, я уже видел ответ на вопрос, но не могу решить проблему. Я пытаюсь правильно кодировать свои столбцы SQL, чтобы он принимал смайлики:

def create_table():
    op = '''CREATE TABLE conversation (
    text TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL,
    intent TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin,
    entities TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin,
    reply TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL
    )'''
    cursor.execute(op)

def insert_message(text, intent, entities, reply):
    try:
        #avoid using placeholders to prevent SQL injection, will pass text, intent and entities to transaction_builder() instead
        sql = """INSERT INTO conversation  (text, intent, entities, reply) VALUES (%s, %s, %s, %s)"""
        transaction_builder(sql, text, intent, entities, reply)
    except Exception as e:
        print ('error is', str(e))

with open('C:/Users/ELITEBOOK/documents/github/chatbot/chatbot/bot/robot_text.txt','r') as table:
        for robo_line in table.readlines():
            message_reply = robo_line
            message_intent = ''
            message_entities = ''
            insert_message(message_text, message_intent, message_entities, message_reply)

Некоторого кода не хватает, но это важно. Мне кажется, что кодировка должна быть установлена, но похоже, что это не так. Извините, если это дубликат

редактировать:

Отслеживание

1366 (HY000): Incorrect string value: '\xF0\x9F\x98\x81\xF0\x9F...' for column 'reply' at row 1
Источник
amanb
8 апреля 2018 в 04:26
0

Так что же происходит, когда вы выполняете свой код? Вы получаете сообщение об ошибке при выполнении SQL-запроса?

Amon
8 апреля 2018 в 04:28
0

Да, когда я запускаю этот код в своей оболочке, я получаю сообщение об ошибке при попытке вставить в базу данных с insert_message

amanb
8 апреля 2018 в 04:29
0

Пожалуйста, не могли бы вы поделиться полным сообщением об ошибке Traceback? Вы можете добавить его к вопросу для удобства чтения. Не забудьте отформатировать его как блок кода.

Amon
8 апреля 2018 в 04:32
0

Только что внес изменения, мне показалось, что для столбцов не установлена ​​​​правильная кодировка. И я думал, что исправил это. Я беру строки из набора данных, который нашел на Kaggle, в нем оказалось много смайликов.

amanb
8 апреля 2018 в 04:55
0

Этот ответ SO может быть полезен.

Amon
8 апреля 2018 в 05:01
0

Я тоже посмотрел на это, я проверил свою таблицу, и character_set_result, connection_set_client и character_set_result все установлены на utf8mb4

Rick James
9 апреля 2018 в 01:39
0

Другие случайные заметки о Python: mysql.rjweb.org/doc.php/charcoll#python Укажите SHOW CREATE TABLE и SHOW VARIABLES LIKE 'char%';

Ответы (0)