MYSQL 中对 utf8mb4 的 ODBC 连接器支持
ODBC connector support for utf8mb4 in MYSQL
我一直卡在这个场景中。
我的应用程序在 C++ 中,它通过 MySQL odbc 连接器 v5.2 Unicode 驱动程序连接到 MySQL 数据库 5.5.34。
我的 table 正在使用字符集和排序规则属性 'utf-8'。为了插入补充的 unicode 字符,我通过
更改了它
我的 table 最初创建于:
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 ("乕乭乺丕");
任何 pointers/heads 都很好。
此外,尝试使用 v5.3 Unicode MYSQL odbc 连接器和 v1.0.5 MariaDB ODBC 连接器,仍然相同。
提前致谢。
您需要在连接到 MySQL 后发出 SET NAMES utf8mb4
。否则,连接 无法处理 4 字节字符。
如果还不够,再往下追SQLExecDirectW
--看看有没有更新
此处的解决方法是使用 MariaDB odbc 连接器连接到 MySQL 数据库。
https://mariadb.com/my_portal/download/connector-odbc/1.0
确保在 ODBC dsn 中设置此项并将连接字符集留空
从 MyODBC v5.2 开始,SET NAMES
已被弃用。因此需要使用 MariaDB 连接器。希望补充字符问题在 MySQL odbc 连接器中得到解决。
我一直卡在这个场景中。
我的应用程序在 C++ 中,它通过 MySQL odbc 连接器 v5.2 Unicode 驱动程序连接到 MySQL 数据库 5.5.34。
我的 table 正在使用字符集和排序规则属性 'utf-8'。为了插入补充的 unicode 字符,我通过
更改了它我的 table 最初创建于:
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 ("乕乭乺丕");
任何 pointers/heads 都很好。
此外,尝试使用 v5.3 Unicode MYSQL odbc 连接器和 v1.0.5 MariaDB ODBC 连接器,仍然相同。
提前致谢。
您需要在连接到 MySQL 后发出 SET NAMES utf8mb4
。否则,连接 无法处理 4 字节字符。
如果还不够,再往下追SQLExecDirectW
--看看有没有更新
此处的解决方法是使用 MariaDB odbc 连接器连接到 MySQL 数据库。 https://mariadb.com/my_portal/download/connector-odbc/1.0
确保在 ODBC dsn 中设置此项并将连接字符集留空
从 MyODBC v5.2 开始,SET NAMES
已被弃用。因此需要使用 MariaDB 连接器。希望补充字符问题在 MySQL odbc 连接器中得到解决。