Обсуждение статьи "Работа с СУБД MySQL из MQL5 (MQL4)" - страница 10

 
Eugeniy Lugovoy #:
Это ошибка генерируется MySQL, решение смотрите https://stackoverflow.com/questions/49194719/authentication-plugin-caching-sha2-password-cannot-be-loaded
Спасибо. Рекомендация сработала.
 
Eugeniy Lugovoy #:

Версия 3.0 включает работу с UTF-8

Мне возвращает знаки вопроса, вместо кириллицы

part DDL table:

ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

тип column -> text (не varchar)

MT4 dll:

MQLMySQL v3.0 x32 Copyright © 2014-2019, FxCodex Laboratory
 
Viktor Vasilyuk #:

Мне возвращает знаки вопроса, вместо кириллицы

part DDL table:

тип column -> text (не varchar)

MT4 dll:

UTF8 идет двухбайтный, классический, так сказать, у вас используется четырехбайтный при определении таблицы. Скорее всего в этом проблема. Тип Text на уровне драйвера MySQL не отличается от varchar.
 
Viktor Vasilyuk #:

Мне возвращает знаки вопроса, вместо кириллицы

part DDL table:

тип column -> text (не varchar)

MT4 dll:

Но я проверю как появится возможность
 
Eugeniy Lugovoy #:
UTF8 идет двухбайтный, классический, так сказать, у вас используется четырехбайтный при определении таблицы. Скорее всего в этом проблема. Тип Text на уровне драйвера MySQL не отличается от varchar.

спасибо за уточнение. Абсолютно все знать не могу, поетому и спрашиваю.

Решение для себя нашел тут.

P.S: Проверил для SELECT - работает

Convert output of MySQL query to utf8
Convert output of MySQL query to utf8
  • 2013.04.17
  • orezvani orezvani 3,515 8 8 gold badges 43 43 silver badges 55 55 bronze badges
  • stackoverflow.com
but I want the mysql to return the in utf8 encoding. Is it any function in mysql to do such task? What is that?
 
Viktor Vasilyuk #:

спасибо за уточнение. Абсолютно все знать не могу, поетому и спрашиваю.

Решение для себя нашел тут.

P.S: Проверил для SELECT - работает

Ну конверт результата запроса допустимо, однако не забывайте что у вас определение utf8mb4 на уровне таблицы, то есть для всех полей varchar по умолчанию будет использоваться, и если у вас в запросе будет условие по текстовому полю, то MySQL попытается неявно преобразование выполнить. А если принять во внимание что у вас по текстовому столбцу может быть построен индекс, то оптимизатор может его не подхватить при таком преобразовании… отсюда вытекут проблемы с производительностью запросов. 
Так что желательно контролировать такие вещи как на уровне таблицы, так и на уровне определения столбцов.
 
Eugeniy Lugovoy #:
Ну конверт результата запроса допустимо, однако не забывайте что у вас определение utf8mb4 на уровне таблицы, то есть для всех полей varchar по умолчанию будет использоваться, и если у вас в запросе будет условие по текстовому полю, то MySQL попытается неявно преобразование выполнить. А если принять во внимание что у вас по текстовому столбцу может быть построен индекс, то оптимизатор может его не подхватить при таком преобразовании… отсюда вытекут проблемы с производительностью запросов. 
Так что желательно контролировать такие вещи как на уровне таблицы, так и на уровне определения столбцов.

там поле description. Что-то на подобие "комментарии", поле не обязательно, просто текстовое обьяснение. Индекса не будет.

MySQL utf8mb4 делает по умолчанию. Скажите, как лучше указать в DDL в следующий раз? что менять и на какую кодировку

Причина обращения: