Is there compatible ODBC driver with Mariadb 10 on Linux? - linux

I tried to use MySQL ODBC driver but that resulted in an error when I compile. MySQL ODBC driver is fine with Mariadb 5.5 but not Mariadb 10. So is there ODBC driver for Mariadb 10?
I installed MySQL Connector ODBC Driver source code version.
The follow is error messages:
* 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

Gentoo seems to have a patch for this:
http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/dev-db/myodbc/files/5.2.7-mariadb-dynamic-array.patch?view=markup
The problem was introduced with the addition of per-thread memory usage statistics ( https://mariadb.atlassian.net/browse/MDEV-4011 ) which required the addition of an additional parameter to the my_init_dynamic_array() macro. This macro isn't defined as part of the public client API, but is exposed in the my_sys.h header file nonetheless and is used by MySQL ODBC, so this change broke the ODBC code when compiled against recent MariaDB versions.
Alternatives are applying above patch, or switching to the MariaDB ODBC driver (which is still in beta though):
https://mariadb.com/kb/en/mariadb/client-libraries/mariadb-odbc-driver/

Related

Raspberry Pi 3 B+ Setup Issue: "error: ‘TLSv1_method’ is deprecated"

I am setting up a Raspberry Pi 3 B+ and connecting it to an IoT hub on Azure by following the instructions in the manual below:
https://azure.microsoft.com/en-us/resources/samples/iot-hub-c-raspberrypi-getstartedkit/
After attempting to build the updated sample solution in step 1.6, the Raspberry Pi's terminal displays this (as the build fails to complete):
[ 59%] Building C object azure-iot-sdks/c/azure-c-shared-utility/CMakeFiles/aziotsharedutil.dir/src/x509_openssl.c.o
/home/pi/iot-hub-c-raspberrypi-getstartedkit/azure-iot-sdks/c/azure-c-shared-utility/src/tlsio_openssl.c: In function ‘create_openssl_instance’:
/home/pi/iot-hub-c-raspberrypi-getstartedkit/azure-iot-sdks/c/azure-c-shared-utility/src/tlsio_openssl.c:713:5: error: ‘TLSv1_method’ is deprecated [-Werror=deprecated-declarations]
tlsInstance->ssl_context = SSL_CTX_new(TLSv1_method());
^~~~~~~~~~~
In file included from /usr/include/openssl/ct.h:13:0,
from /usr/include/openssl/ssl.h:61,
from /home/pi/iot-hub-c-raspberrypi-getstartedkit/azure-iot-sdks/c/azure-c-shared-utility/src/tlsio_openssl.c:9:
/usr/include/openssl/ssl.h:1612:1: note: declared here
DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_method(void)) /*
TLSv1.0 */
^
cc1: all warnings being treated as errors
azure-iot-sdks/c/azure-c-shared-
utility/CMakeFiles/aziotsharedutil.dir/build.make:950: recipe for target 'azure-iot-sdks/c/azure-c-shared-
utility/CMakeFiles/aziotsharedutil.dir/src/tlsio_openssl.c.o' failed
make[2]: *** [azure-iot-sdks/c/azure-c-shared-
utility/CMakeFiles/aziotsharedutil.dir/src/tlsio_openssl.c.o] Error 1
make[2]: *** Waiting for unfinished jobs....
[ 60%] Building C object azure-iot-sdks/c/iothub_service_client/CMakeFiles/iothub_service_client.dir/src/iothub_registrymanager.c.o
[ 61%] Building C object azure-iot-sdks/c/iothub_service_client/CMakeFiles/iothub_service_client.dir/src/iothub_messaging_ll.c.o
CMakeFiles/Makefile2:1042: recipe for target 'azure-iot-sdks/c/azure-
c-shared-utility/CMakeFiles/aziotsharedutil.dir/all' failed
make[1]: *** [azure-iot-sdks/c/azure-c-shared-
utility/CMakeFiles/aziotsharedutil.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 62%] Building C object azure-iot-sdks/c/iothub_service_client/CMakeFiles/iothub_service_client.dir/src/iothub_service_client_auth.c.o
[ 62%] Building C object azure-iot-sdks/c/iothub_service_client/CMakeFiles/iothub_service_client.dir/__/iothub_client/src/iothub_message.c.o
[ 63%] Linking C static library libiothub_service_client.a
[ 63%] Built target iothub_service_client
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2
I am unable to get past this error. Any help would be greatly appreciated. Thanks.

Missing soft link to linux source tree

In /lib/modules/xx.xx.xx-xx there is supposed to be two soft links one called source and one called build. The source one is there and its fine but the build one is missing and I have no idea where it is supposed to point to and I need to install a driver for my video card. Is there any way to find out where that is supposed to point if so how and where. I know there are a lot of other questions out there but not of them actually discribe where they are supposed to be pointing in the end.
Updated the link and now it is having build errors that I can't fix because I can't even find the struct its talking about
make -C /lib/modules/3.16.0-4-amd64/build M=/home/gibsont/gpuTempDriver modules
make[1]: Entering directory '/usr/src/linux-headers-3.16.0-4-amd64'
Makefile:10: *** mixed implicit and normal rules: deprecated syntax
make[1]: Entering directory `/usr/src/linux-headers-3.16.0-4-amd64'
CC [M] /home/gibsont/gpuTempDriver/base.o
/home/gibsont/gpuTempDriver/base.c: In function ‘_rtl_init_mac80211’:
/home/gibsont/gpuTempDriver/base.c:319:6: error: ‘IEEE80211_HW_BEACON_FILTER’ undeclared (first use in this function)
IEEE80211_HW_BEACON_FILTER |
^
/home/gibsont/gpuTempDriver/base.c:319:6: note: each undeclared identifier is reported only once for each function it appears in
/home/gibsont/gpuTempDriver/base.c:349:4: error: ‘struct ieee80211_hw’ has no member named ‘channel_change_time’
hw->channel_change_time = 100;
^
/home/gibsont/gpuTempDriver/base.c: In function ‘rtl_action_proc’:
/home/gibsont/gpuTempDriver/base.c:858:32: error: ‘struct ieee80211_conf’ has no member named ‘channel’
rx_status.freq = hw->conf.channel->center_freq;
^
/home/gibsont/gpuTempDriver/base.c:859:32: error: ‘struct ieee80211_conf’ has no member named ‘channel’
rx_status.band = hw->conf.channel->band;
^
/home/gibsont/gpuTempDriver/base.c:861:25: error: ‘RX_FLAG_MACTIME_MPDU’ undeclared (first use in this function)
rx_status.flag |= RX_FLAG_MACTIME_MPDU;
^
/home/gibsont/gpuTempDriver/base.c: In function ‘rtl_beacon_statistic’:
/home/gibsont/gpuTempDriver/base.c:1132:2: error: implicit declaration of function ‘compare_ether_addr’ [-Werror=implicit-function-declaration]
if (compare_ether_addr(hdr->addr3, rtlpriv->mac80211.bssid))
^
/home/gibsont/gpuTempDriver/base.c: In function ‘rtl_send_smps_action’:
/home/gibsont/gpuTempDriver/base.c:1414:16: error: ‘struct <anonymous>’ has no member named ‘sta’
info->control.sta = sta;
^
/home/gibsont/gpuTempDriver/base.c:1415:24: error: ‘struct ieee80211_conf’ has no member named ‘channel’
info->band = hw->conf.channel->band;
^
cc1: some warnings being treated as errors
/usr/src/linux-headers-3.16.0-4-common/scripts/Makefile.build:262: recipe for target '/home/gibsont/gpuTempDriver/base.o' failed
make[4]: *** [/home/gibsont/gpuTempDriver/base.o] Error 1
/usr/src/linux-headers-3.16.0-4-common/Makefile:1350: recipe for target '_module_/home/gibsont/gpuTempDriver' failed
make[3]: *** [_module_/home/gibsont/gpuTempDriver] Error 2
Makefile:181: recipe for target 'sub-make' failed
make[2]: *** [sub-make] Error 2
Makefile:8: recipe for target 'all' failed
make[1]: *** [all] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-3.16.0-4-amd64'
Makefile:27: recipe for target 'all' failed
make: *** [all] Error 2
I copied it from the disk because it was a read only and placed it into my home directory.
I feel like this has become a whole new issues or possibly the link is wrong and is causing this issue.
this is mine:
2509142 lrwxrwxrwx 1 root root 37 Apr 24 15:02 build -> /usr/src/linux-headers-3.16.0-4-amd64
actually it's managed by package manager. I install linux headers using apt-get. I think you should do the same, unless you are advanced kernel developer.

reference console_loglevel ERROR in kernel module

I have a Linux module, which has a debug function and I just want to call that function in debug mode.
Now I have code like this:
if (console_loglevel >= CONSOLE_LOGLEVEL_DEBUG)
dump_my_message(dev, my_msg);
But when build this code in linux-next, it will throw below error:
CHK include/generated/uapi/linux/version.h
Kernel: arch/x86/boot/bzImage is ready (#2)
Building modules, stage 2.
MODPOST 2738 modules
ERROR: "console_printk" [drivers/mymodule.ko] undefined!
scripts/Makefile.modpost:91: recipe for target '__modpost' failed
make[1]: *** [__modpost] Error 1
Makefile:1117: recipe for target 'modules' failed
make: *** [modules] Error 2
Can you help to find out how to make this work? thanks!!!
The compilation error is caused by the fact that console_printk symbol is not exported so it cannot be used by modules.
What you really should use, however, is Dynamic debug functionality and its pr_debug()/dev_dbg() functions.
Basically what you need is to ensure that CONFIG_DYNAMIC_DEBUG is enabled in your kernel, use dev_dbg() in all places where you want to write some debugging code and then dynamically enable your debug messages, for example:
To enable all the messages in your module, add dyndbg=+p at the end of your insmod/modprobe call.
To selectively enable only some of the messages, use query language described in the documentation. For example, to only enable messages from functions foo() and bar() in your module, use:
insmod mymodule.ko dyndbg="func foo +p; func bar +p"

What is the replacement of i_blksize member in struct inode?

I am compiling a stackable filesystem wrapfs and i got an error regardign missing member i_blksize in struct inode datastructure ? I looked up and found that after kernel version 2.6 it has been modified significantly and i_blksize has been removed. What is the replacement for that member ?
kunal#Baweja:~/Documents/wrapfs$ make
make -C /lib/modules/3.13.0-40-generic/build SUBDIRS=/home/kunal/Documents/wrapfs modules
make[1]: Entering directory `/usr/src/linux-headers-3.13.0-40-generic'
CC [M] /home/kunal/Documents/wrapfs/fist_wrapfs.o
In file included from /home/kunal/Documents/wrapfs/fist_wrapfs.c:15:0:
/home/kunal/Documents/wrapfs/wrapfs.h: In function ‘fist_copy_attr_all’:
/home/kunal/Documents/wrapfs/wrapfs.h:203:6: error: ‘inode_t’ has no member named ‘i_blksize’
dest->i_blksize = src->i_blksize;
^
/home/kunal/Documents/wrapfs/wrapfs.h:203:23: error: ‘inode_t’ has no member named ‘i_blksize’
dest->i_blksize = src->i_blksize;
^
make[2]: *** [/home/kunal/Documents/wrapfs/fist_wrapfs.o] Error 1
make[1]: *** [_module_/home/kunal/Documents/wrapfs] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-3.13.0-40-generic'
make: *** [all] Error 2
Looks like it was an unnecessary duplicate
inode->i_blksize == (1 << inode->i_blkbits)
Check-out this mailing thread

BusyBox: Error during make

I try to install BusyBox 1.20.2 on a embedded system with PowerPc. At first I want to try it with the default config.
So this are the commands
make defconfig
make
And this is the result:
ma-bash-3.2# make
CC miscutils/ubi_tools.o
miscutils/ubi_tools.c: In function 'ubi_tools_main':
miscutils/ubi_tools.c:137: error: 'UBI_DEV_NUM_AUTO' undeclared (first use in this function)
miscutils/ubi_tools.c:137: error: (Each undeclared identifier is reported only once
miscutils/ubi_tools.c:137: error: for each function it appears in.)
miscutils/ubi_tools.c:157: error: storage size of 'req' isn't known
miscutils/ubi_tools.c:165: error: 'UBI_IOCATT' undeclared (first use in this function)
miscutils/ubi_tools.c:157: warning: unused variable 'req'
miscutils/ubi_tools.c:171: error: 'UBI_IOCDET' undeclared (first use in this function)
make[1]: *** [miscutils/ubi_tools.o] Error 1
make: *** [miscutils] Error 2
How is it possible to solve that Error?
Can I disable this ubi_tool ? What effects will that have and how to do that?
Remove these lines in .config:
CONFIG_UBIATTACH=y
CONFIG_UBIDETACH=y
CONFIG_UBIMKVOL=y
CONFIG_UBIRMVOL=y
CONFIG_UBIRSVOL=y
CONFIG_UBIUPDATEVOL=y
you won't have support for ubifs.

Resources