Поддержка коннектора 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 и оставили пустой набор символов подключения
Начиная с v5.2 MyODBC, SET NAMES
был объявлен устаревшим Отсюда необходимость использования разъема MariaDB. Надеюсь, проблема с дополнительными символами исправлена в коннекторе MySQL odbc.
Вам нужно оформить SET NAMES utf8mb4
после подключения к MySQL. В противном случае соединение не может обрабатывать 4-байтовые символы.
Если этого недостаточно, то преследуйте SQLExecDirectW
- посмотреть, если есть обновление к нему.