3

MySQL ODBC ドライバーを使用しようとしましたが、コンパイル時にエラーが発生しました。MySQL ODBC ドライバーは Mariadb 5.5 では問題ありませんが、Mariadb 10 では問題ありません。Mariadb 10 用の ODBC ドライバーはありますか?

MySQL Connector ODBC Driver ソースコード版をインストールしました。

以下はエラーメッセージです。

* MySQL Connector ODBC Driver 5.3.4    
    Scanning dependencies of target myodbc5a
    [  6%] Building C object driver/CMakeFiles/myodbc5a.dir/catalog.c.o
    [  7%] Building C object driver/CMakeFiles/myodbc5a.dir/catalog_no_i_s.c.o
    /myodbc/mysql-connector-odbc-5.3.4-src/driver/catalog_no_i_s.c:1096:69: error: macro "my_init_dynamic_array" requires 5 arguments, but only 4 given
    /myodbc/mysql-connector-odbc-5.3.4-src/driver/catalog_no_i_s.c: In function 'foreign_keys_no_i_s':
    /myodbc/mysql-connector-odbc-5.3.4-src/driver/catalog_no_i_s.c:1096: error: 'my_init_dynamic_array' undeclared (first use in this function)
    /myodbc/mysql-connector-odbc-5.3.4-src/driver/catalog_no_i_s.c:1096: error: (Each undeclared identifier is reported only once
    /myodbc/mysql-connector-odbc-5.3.4-src/driver/catalog_no_i_s.c:1096: error: for each function it appears in.)
    make[2]: *** [driver/CMakeFiles/myodbc5a.dir/catalog_no_i_s.c.o] 오류 1
    make[1]: *** [driver/CMakeFiles/myodbc5a.dir/all] 오류 2
    make: *** [all] 오류 2

* MySQL Conncector ODBC Driver 5.2.7
    [  5%] Built target myodbc-util
    Scanning dependencies of target myodbc5a
    [  6%] Building C object driver/CMakeFiles/myodbc5a.dir/catalog.c.o
    [  8%] Building C object driver/CMakeFiles/myodbc5a.dir/catalog_no_i_s.c.o
    /myodbc/mysql-connector-odbc-5.2.7-src/driver/catalog_no_i_s.c:1096:69: error: macro "my_init_dynamic_array" requires 5 arguments, but only 4 given
    /myodbc/mysql-connector-odbc-5.2.7-src/driver/catalog_no_i_s.c: In function 'foreign_keys_no_i_s':
    /myodbc/mysql-connector-odbc-5.2.7-src/driver/catalog_no_i_s.c:1096: error: 'my_init_dynamic_array' undeclared (first use in this function)
    /myodbc/mysql-connector-odbc-5.2.7-src/driver/catalog_no_i_s.c:1096: error: (Each undeclared identifier is reported only once
    /myodbc/mysql-connector-odbc-5.2.7-src/driver/catalog_no_i_s.c:1096: error: for each function it appears in.)
    make[2]: *** [driver/CMakeFiles/myodbc5a.dir/catalog_no_i_s.c.o] 오류 1
    make[1]: *** [driver/CMakeFiles/myodbc5a.dir/all] 오류 2
    make: *** [all] 오류 2

* MySQL Conncector ODBC Driver 5.1.13
    [  9%] Building C object driver/CMakeFiles/myodbc5.dir/ansi.c.o
    [ 11%] Building C object driver/CMakeFiles/myodbc5.dir/catalog.c.o
    [ 12%] Building C object driver/CMakeFiles/myodbc5.dir/catalog_no_i_s.c.o
    [ 14%] Building C object driver/CMakeFiles/myodbc5.dir/connect.c.o
    [ 16%] Building C object driver/CMakeFiles/myodbc5.dir/cursor.c.o
    [ 18%] Building C object driver/CMakeFiles/myodbc5.dir/desc.c.o
    /myodbc/mysql-connector-odbc-5.1.13-src/driver/desc.c:66:66: error: macro "my_init_dynamic_array" requires 5 arguments, but only 4 given
    /myodbc/mysql-connector-odbc-5.1.13-src/driver/desc.c: In function 'desc_alloc':
    /myodbc/mysql-connector-odbc-5.1.13-src/driver/desc.c:66: error: 'my_init_dynamic_array' undeclared (first use in this function)
    /myodbc/mysql-connector-odbc-5.1.13-src/driver/desc.c:66: error: (Each undeclared identifier is reported only once
    /myodbc/mysql-connector-odbc-5.1.13-src/driver/desc.c:66: error: for each function it appears in.)
    /myodbc/mysql-connector-odbc-5.1.13-src/driver/desc.c: In function 'MySQLSetDescField':
    /myodbc/mysql-connector-odbc-5.1.13-src/driver/desc.c:778: warning: cast from pointer to integer of different size
    /myodbc/mysql-connector-odbc-5.1.13-src/driver/desc.c:786: warning: cast from pointer to integer of different size
    /myodbc/mysql-connector-odbc-5.1.13-src/driver/desc.c:895:57: error: macro "my_init_dynamic_array" requires 5 arguments, but only 4 given
    /myodbc/mysql-connector-odbc-5.1.13-src/driver/desc.c: In function 'MySQLCopyDesc':
    /myodbc/mysql-connector-odbc-5.1.13-src/driver/desc.c:893: error: 'my_init_dynamic_array' undeclared (first use in this function)
    make[2]: *** [driver/CMakeFiles/myodbc5.dir/desc.c.o] 오류 1
    make[1]: *** [driver/CMakeFiles/myodbc5.dir/all] 오류 2
    make: *** [all] 오류 2
4

1 に答える 1

0

Gentoo にはこれに対するパッチがあるようです:

http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/dev-db/myodbc/files/5.2.7-mariadb-dynamic-array.patch?view=markup

この問題は、スレッドごとのメモリ使用統計 ( https://mariadb.atlassian.net/browse/MDEV-4011my_init_dynamic_array() ) の追加によって発生し、マクロに追加のパラメーターを追加する必要がありました。このマクロはパブリック クライアント API の一部として定義されていませんが、my_sys.hヘッダー ファイルで公開されており、MySQL ODBC で使用されているため、最近の MariaDB バージョンに対してコンパイルすると、この変更により ODBC コードが破損しました。

代替手段としては、上記のパッチを適用するか、MariaDB ODBC ドライバー (まだベータ版) に切り替えます。

https://mariadb.com/kb/en/mariadb/client-libraries/mariadb-odbc-driver/

于 2014-11-26T11:11:48.600 に答える