0

私はこのシナリオで立ち往生しています。

私のアプリケーションは、MySQL odbc コネクタ v5.2 Unicode ドライバーを介して MySQL データベース 5.5.34 に接続する C++ です。

私のテーブルは、文字セットと照合プロパティ「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 コネクタを使用してみましたが、同じです。

前もって感謝します。

4

2 に答える 2

4

ここでの回避策は、MariaDB odbc コネクタを使用して MySQL データベースに接続することです。 https://mariadb.com/my_portal/download/connector-odbc/1.0

これをODBC dsnで設定し、接続文字セットを空のままにしてください

MariaDB コネクタ

MyODBC の v5.2 以降はSET NAMES廃止されました。したがって、MariaDB コネクタを使用する必要があります。MySQL odbc コネクタで補助文字の問題が修正されることを願っています。

于 2016-02-23T09:40:24.783 に答える