mkleehammer / pyodbc

Python ODBC bridge
https://github.com/mkleehammer/pyodbc/wiki
MIT No Attribution
2.93k stars 561 forks source link

Fedora 35 / Python 3.10.1 / mysql 8 / Can't open lib '/usr/lib64/unixODBC/libmyodbc8.so' #1011

Closed anhvut closed 2 years ago

anhvut commented 2 years ago

Hello,

I have a classic message can't open lib xxx but cannot figure why. I did not find any duplicate for this case.

Environment

Issue

Connect fails with message file not found.

pyodbc.connect('DRIVER={MySQL};SERVER=localhost;USER=user;PASSWORD=pwd;OPTION=3;DATABASE=mydb')
pyodbc.Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib '/usr/lib64/unixODBC/libmyodbc8.so' : file not found (0) (SQLDriverConnect)")

However the driver exists and no import is missing:

$ ll /usr/lib64/unixODBC/libmyodbc8.so
lrwxrwxrwx. 1 root root 14 Oct 31 21:06 /usr/lib64/unixODBC/libmyodbc8.so -> libmyodbc8w.so
$ ll /usr/lib64/unixODBC/libmyodbc8w.so
-rwxr-xr-x. 1 root root 6.9M Oct 31 21:06 /usr/lib64/unixODBC/libmyodbc8w.so
$ ldd /usr/lib64/unixODBC/libmyodbc8.so
        linux-vdso.so.1 (0x00007fff621fb000)
        libmysqlclient.so.21 => /usr/lib64/mysql/libmysqlclient.so.21 (0x00007fab7cbb8000)
        libodbcinst.so.2 => /lib64/libodbcinst.so.2 (0x00007fab7cba3000)
        libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007fab7c984000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fab7c969000)
        libc.so.6 => /lib64/libc.so.6 (0x00007fab7c75f000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fab7d915000)
        libz.so.1 => /lib64/libz.so.1 (0x00007fab7c745000)
        libzstd.so.1 => /lib64/libzstd.so.1 (0x00007fab7c66c000)
        libssl.so.1.1 => /lib64/libssl.so.1.1 (0x00007fab7c5cf000)
        libcrypto.so.1.1 => /lib64/libcrypto.so.1.1 (0x00007fab7c2e1000)
        libresolv.so.2 => /lib64/libresolv.so.2 (0x00007fab7c2cd000)
        libltdl.so.7 => /lib64/libltdl.so.7 (0x00007fab7c2c1000)
        libm.so.6 => /lib64/libm.so.6 (0x00007fab7c1e5000)

The build of pyodbc.cpython-310-x86_64-linux-gnu.so successes with warning build_out.txt

Any clue ?

Thanks a lot,

v-chojas commented 2 years ago

You can use strace to find out which file it is not finding.

bucknerns commented 2 years ago

I had to downgrade my mysql driver to 8.0.20 when I ran into a similar issue.

anhvut commented 2 years ago

thanks for your response. I could not find any clue using strace, I finally manage to make mysql work with package mysql-connector-python