in /etc/odbcinst.ini, I have [MySQL] Description = ODBC for MySQL Driver = /usr/lib/libmyodbc.so FileUsage = 1 in /etc/odbc.ini, I have [MySQL-test] Description = MySQL database test Driver = MySQL Host = localhost Database = test Port = 3306 When I try to connect, I get: [kaboom@skuld etc]$ isql -v MySQL-test test [unixODBC][Driver Manager]Can't open lib '/usr/lib/libmyodbc.so' : /usr/lib/libm yodbc.so: undefined symbol: _dig_vec [ISQL]ERROR: Could not SQLConnect [kaboom@skuld etc]$
_dig_vec is defined in libmysqlclient.so (from strings/int2str.c). For some reason on your system, libmysqlclient.so is not being loaded properly or the proper version is not being loaded. I'll need a little more information from you. Could you please attach the output from the following commands (issued from your /usr/lib directory): 1. ldd libmyodbc.so 2. ldd mysql/libmysqlclient.so.10 3. nm mysql/libmysqlclient.so.10 | grep _dig_vec Also, could you issue the 'mysql' command (client side utility) and attempt to connect to the 'Test' database. Thanks.
My database works from MySQL: [kaboom@skuld kaboom]$ mysql test Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 to server version: 3.23.57 Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> select version(); +-----------+ | version() | +-----------+ | 3.23.57 | +-----------+ 1 row in set (0.08 sec) mysql> \q Bye [kaboom@skuld kaboom]$ For my libraries, [kaboom@skuld kaboom]$ ldd /usr/lib/libmyodbc.so libc.so.6 => /lib/tls/libc.so.6 (0x005c5000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000) [kaboom@skuld kaboom]$ ldd /usr/lib/mysql/libmysqlclient.so.10 libz.so.1 => /usr/lib/libz.so.1 (0x00816000) libcrypt.so.1 => /lib/libcrypt.so.1 (0x00db0000) libnsl.so.1 => /lib/libnsl.so.1 (0x00cde000) libm.so.6 => /lib/tls/libm.so.6 (0x006fd000) libc.so.6 => /lib/tls/libc.so.6 (0x005c5000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000) [kaboom@skuld kaboom]$ nm /usr/lib/mysql/libmysqlclient.so.10 | grep _dig_vec nm: /usr/lib/mysql/libmysqlclient.so.10: no symbols [kaboom@skuld kaboom]$
Hmmm... the ldd of libmyodbc.so looks suspicious. Here's what mine has: token:/usr/lib > ldd libmyodbc.so libmysqlclient.so.10 => /usr/lib/mysql/libmysqlclient.so.10 (0x00ce4000) libz.so.1 => /usr/lib/libz.so.1 (0x00f00000) libodbcinst.so.1 => /usr/lib/libodbcinst.so.1 (0x00444000) libc.so.6 => /lib/tls/libc.so.6 (0x004c8000) libcrypt.so.1 => /lib/libcrypt.so.1 (0x009de000) libnsl.so.1 => /lib/libnsl.so.1 (0x00aaf000) libm.so.6 => /lib/tls/libm.so.6 (0x00111000) libdl.so.2 => /lib/libdl.so.2 (0x00133000) libpthread.so.0 => /lib/tls/libpthread.so.0 (0x00136000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000) Your listing would explain why it can't find _dig_vec... libmysqlclient.so is not being loaded. Go into /usr/lib and perform an 'ls -li libmyodbc' and let me know what libmyodbc.so is really pointing to.
Hmm, not sure why mine's different. [root@skuld lib]# ls -li libmyodbc* 56044 -rwxr-xr-x 1 root root 92936 Jul 3 07:31 libmyodbc-2.50.39.so 56045 lrwxrwxrwx 1 root root 20 Aug 23 16:33 libmyodbc.so -> libmyodbc-2.50.39.so [root@skuld lib]# ldd libmyodbc-2.50.39.so libc.so.6 => /lib/tls/libc.so.6 (0x005c5000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000) [root@skuld lib]# rpm -Vf /usr/lib/libmyodbc-2.50.39.so [root@skuld lib]# rpm -qf /usr/lib/libmyodbc-2.50.39.so MyODBC-2.50.39-15 [root@skuld lib]#
Ok... now we're getting somewhere. Where did you get MyODBC-2.50.39-15.i386.rpm from? The beta came with MyODBC-2.50.39-12.i386.rpm. Please remove -15 and try it with -12.
-15 is rawhide. This system is beta1 updated daily to the rawhide tree
Yep, managed to get it to fail in a similar manner. The problem is with the libtool interaction in the MyODBC.spec file. libtool throws out errors complaining about missing libraries (which is why the ldd output is so small compared to the other one). We'll fix it and put the new rpm in rawhide.
Ok... MyODBC-2.50.39-17.i386.rpm is built and verified. Will be in rawhide soon.
thanks, that fixed it