Поддержка коннектора ODBC для utf8mb4 в MYSQL

Я застрял в этом сценарии.

Мое приложение на C++, которое подключается к базе данных MySQL 5.5.34 через MySQL odbc connector v5.2 Unicode Driver.

В моих таблицах использовались набор символов и параметры сортировки 'utf-8'. Чтобы вставить дополнительные символы Юникода, я изменил его с помощью

Моя таблица была изначально создана:

CREATE TABLE mytable (SAMPLECOLUMN text) ENGINE=InnoDB DEFAULTCHARSET=utf8;

changed to,
ALTER TABLE mytable CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

После этого я могу напрямую (не через свое приложение) вставлять дополнительные символы в столбец, содержащий тип данных 'TEXT'.

Коннектор odbc падает, когда встречает дополнительные символы.

Ниже приведены некоторые из моих конфигураций my.ini.

[mysql]
default-character-set=utf8

[mysqld]
character-set-server=utf8
default-storage-engine=INNODB

Запрос, который я пытаюсь вставить:

INSERT INTO mytable (SAMPLECOLUMN) VALUES ("乕乭乺丕");

любые указатели / заголовки были бы великолепны.

Кроме того, попытался использовать v5.3 Unicode MYSQL odbc коннектор и v1.0.5 MariaDB ODBC коннектор, все тот же.

Заранее спасибо.

2 ответа

Решение

Обходной путь здесь должен использовать соединитель odbc MariaDB для соединения с базой данных MySQL. https://mariadb.com/my_portal/download/connector-odbc/1.0

Убедитесь, что вы установили это в ODBC dsn и оставили пустой набор символов подключения

Разъем MariaDB

Начиная с v5.2 MyODBC, SET NAMES был объявлен устаревшим Отсюда необходимость использования разъема MariaDB. Надеюсь, проблема с дополнительными символами исправлена ​​в коннекторе MySQL odbc.

Вам нужно оформить SET NAMES utf8mb4 после подключения к MySQL. В противном случае соединение не может обрабатывать 4-байтовые символы.

Если этого недостаточно, то преследуйте SQLExecDirectW - посмотреть, если есть обновление к нему.

Другие вопросы по тегам