R to MySQL выдает ошибку, не удалось запустить оператор: недопустимая строка символов utf8mb4

Как лучше всего записать польские символы в MySQL с помощью R?

Я попытался отправить R data.frame в свою локальную базу данных MySQL. Data.frame включает польские символы, такие как ł.

mydb = dbConnect(MySQL(), user='root', password='1234', dbname='semstorm1', host='localhost')    
dbWriteTable(mydb,"dane3", dane2, append = T, row.names = F)

я получаю ошибку

не удалось запустить оператор: недопустимая строка символов utf8mb4

Это может быть полезно: введите здесь описание изображения

РЕДАКТИРОВАТЬ

Когда я использую вставку в mysql, она работает нормально (пример кода ниже)

INSERT INTO test1 VALUES ("AAAAŁłśśś")

Когда я вставляю данные через R dbsendQuery (код ниже) dbSendQuery(mydb, «вставить в test1 VALUES ('asdllllłłśżżż')»), это дает мне asdllll³³œ¿¿¿

Когда я dbWriteTable(mydb,"dane3", dane2, append = T, row.names = F)

это дает мне ошибку, не удалось запустить оператор: недопустимая строка символов utf8mb4: 'praca bia'


person Sebastian SEO    schedule 12.11.2019    source источник
comment
Более естественный английский флоу. Включено тематическое предложение.   -  person wibeasley    schedule 13.11.2019


Ответы (1)


Есть несколько мест, где вам нужно установить используемую кодировку. Похоже, вы используете MySQL 8.0.

Набор символов для клиента и для таблиц может не совпадать. И MySQL должен иметь возможность конвертировать кириллицу между cp852 и utf8mb4 (он же UTF-8).

stoke-l — это шестнадцатеричный код 88 в cp852 и шестнадцатеричный CB86 в utf8mb4.

Если у клиента «88», но в настройках указано, что клиент использует utf8mb4, появится это сообщение об ошибке.

Вот мои грубые заметки о R, если вы хотите utf8/utf8mb4; измените на cp952, если клиент действительно использует, например, "88".

Р / РСтудио

Инструмент -> Глобальные параметры -> Код -> Сохранение и установка UTF-8 rs ‹- dbSendQuery(con, 'установить набор символов "utf8"') rs ‹- dbSendQuery(con, 'SET NAMES utf8')

options(encoding = "UTF-8") в верхней части моего основного скрипта, из которого я вызываю свой пакет, похоже, решает проблему с наличием символов, отличных от ascii, в коде моего пакета.

read_chunk(lines = readLines("TestSpanishText.R", encoding = "UTF-8")) (также файл())

Кодировка символов

См. также «лучшую практику» в Trouble с символами UTF-8; то, что я вижу, не то, что я сохранил для контрольного списка вещей, которые должны быть установлены последовательно.

В долгосрочной перспективе, вероятно, целесообразно использовать только utf8mb4, оставив множество других кодировок только для первоначального импорта старого текста.

person Rick James    schedule 12.11.2019
comment
@SebastianSEO - Есть еще подсказки? Любые шестнадцатеричные дампы, которые помогут мне отладить это? - person Rick James; 13.11.2019