PyMySQL / mysqlclient

MySQL database connector for Python (with Python 3 support)

Home Page:https://mysqlclient.readthedocs.io/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

pip3 install mysqlclient fails on mysql version >= 8.3.0

AvishekDe opened this issue · comments

Discussed in #686

Originally posted by AvishekDe January 29, 2024

What OS and which version do you use?

macOS 14.3

How did you installed mysql client library?

brew install mysql

Output from pkg-config --cflags --libs mysqlclient

-I/opt/homebrew/Cellar/mysql-client/8.3.0/include/mysql -L/opt/homebrew/Cellar/mysql-client/8.3.0/lib -lmysqlclient

How did you tried to install mysqlclient?

pip install mysqlclient

Output of building mysqlclient

Collecting mysqlclient
  Using cached mysqlclient-2.2.1.tar.gz (89 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
Building wheels for collected packages: mysqlclient
  Building wheel for mysqlclient (pyproject.toml) ... error
  error: subprocess-exited-with-error
  
  × Building wheel for mysqlclient (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [58 lines of output]
      # Options for building extension module:
        extra_compile_args: ['-I/opt/homebrew/Cellar/mysql-client/8.3.0/include/mysql', '-std=c99']
        extra_link_args: ['-L/opt/homebrew/Cellar/mysql-client/8.3.0/lib', '-lmysqlclient']
        define_macros: [('version_info', (2, 2, 1, 'final', 0)), ('__version__', '2.2.1')]
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.macosx-14.1-arm64-cpython-311
      creating build/lib.macosx-14.1-arm64-cpython-311/MySQLdb
      copying src/MySQLdb/release.py -> build/lib.macosx-14.1-arm64-cpython-311/MySQLdb
      copying src/MySQLdb/cursors.py -> build/lib.macosx-14.1-arm64-cpython-311/MySQLdb
      copying src/MySQLdb/connections.py -> build/lib.macosx-14.1-arm64-cpython-311/MySQLdb
      copying src/MySQLdb/__init__.py -> build/lib.macosx-14.1-arm64-cpython-311/MySQLdb
      copying src/MySQLdb/times.py -> build/lib.macosx-14.1-arm64-cpython-311/MySQLdb
      copying src/MySQLdb/converters.py -> build/lib.macosx-14.1-arm64-cpython-311/MySQLdb
      copying src/MySQLdb/_exceptions.py -> build/lib.macosx-14.1-arm64-cpython-311/MySQLdb
      creating build/lib.macosx-14.1-arm64-cpython-311/MySQLdb/constants
      copying src/MySQLdb/constants/FLAG.py -> build/lib.macosx-14.1-arm64-cpython-311/MySQLdb/constants
      copying src/MySQLdb/constants/CLIENT.py -> build/lib.macosx-14.1-arm64-cpython-311/MySQLdb/constants
      copying src/MySQLdb/constants/__init__.py -> build/lib.macosx-14.1-arm64-cpython-311/MySQLdb/constants
      copying src/MySQLdb/constants/ER.py -> build/lib.macosx-14.1-arm64-cpython-311/MySQLdb/constants
      copying src/MySQLdb/constants/CR.py -> build/lib.macosx-14.1-arm64-cpython-311/MySQLdb/constants
      copying src/MySQLdb/constants/FIELD_TYPE.py -> build/lib.macosx-14.1-arm64-cpython-311/MySQLdb/constants
      running egg_info
      writing src/mysqlclient.egg-info/PKG-INFO
      writing dependency_links to src/mysqlclient.egg-info/dependency_links.txt
      writing top-level names to src/mysqlclient.egg-info/top_level.txt
      reading manifest file 'src/mysqlclient.egg-info/SOURCES.txt'
      reading manifest template 'MANIFEST.in'
      adding license file 'LICENSE'
      writing manifest file 'src/mysqlclient.egg-info/SOURCES.txt'
      copying src/MySQLdb/_mysql.c -> build/lib.macosx-14.1-arm64-cpython-311/MySQLdb
      running build_ext
      building 'MySQLdb._mysql' extension
      creating build/temp.macosx-14.1-arm64-cpython-311
      creating build/temp.macosx-14.1-arm64-cpython-311/src
      creating build/temp.macosx-14.1-arm64-cpython-311/src/MySQLdb
      clang -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -I/opt/homebrew/opt/mysql-client/include "-Dversion_info=(2, 2, 1, 'final', 0)" -D__version__=2.2.1 -I/Users/avishekde/.pyenv/versions/3.11.6/include/python3.11 -c src/MySQLdb/_mysql.c -o build/temp.macosx-14.1-arm64-cpython-311/src/MySQLdb/_mysql.o -I/opt/homebrew/Cellar/mysql-client/8.3.0/include/mysql -std=c99
      src/MySQLdb/_mysql.c:527:9: error: call to undeclared function 'mysql_ssl_set'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
              mysql_ssl_set(&(self->connection), key, cert, ca, capath, cipher);
              ^
      src/MySQLdb/_mysql.c:527:9: note: did you mean 'mysql_close'?
      /opt/homebrew/Cellar/mysql-client/8.3.0/include/mysql/mysql.h:797:14: note: 'mysql_close' declared here
      void STDCALL mysql_close(MYSQL *sock);
                   ^
      src/MySQLdb/_mysql.c:1795:9: error: call to undeclared function 'mysql_kill'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
          r = mysql_kill(&(self->connection), pid);
              ^
      src/MySQLdb/_mysql.c:1795:9: note: did you mean 'mysql_ping'?
      /opt/homebrew/Cellar/mysql-client/8.3.0/include/mysql/mysql.h:525:13: note: 'mysql_ping' declared here
      int STDCALL mysql_ping(MYSQL *mysql);
                  ^
      src/MySQLdb/_mysql.c:2011:9: error: call to undeclared function 'mysql_shutdown'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
          r = mysql_shutdown(&(self->connection), SHUTDOWN_DEFAULT);
              ^
      3 errors generated.
      error: command '/usr/bin/clang' failed with exit code 1
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for mysqlclient
Failed to build mysqlclient
ERROR: Could not build wheels for mysqlclient, which is required to install pyproject.toml-based projects

Thank you for reporting.
Please using stable (LTS) version instead of beta (innovation) version for now.
I will fix them before it become LTS.

@etripier, @methane Still getting same error.

Collecting mysqlclient
Using cached mysqlclient-2.2.1.tar.gz (89 kB)
Installing build dependencies ... done
Getting requirements to build wheel ... done
Installing backend dependencies ... done
Preparing metadata (pyproject.toml) ... done
Building wheels for collected packages: mysqlclient
Building wheel for mysqlclient (pyproject.toml) ... error
error: subprocess-exited-with-error

× Building wheel for mysqlclient (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [59 lines of output]
Trying pkg-config --exists mysqlclient
# Options for building extension module:
extra_compile_args: ['-I/opt/homebrew/Cellar/mysql/8.3.0/include/mysql', '-std=c99']
extra_link_args: ['-L/opt/homebrew/Cellar/mysql/8.3.0/lib', '-lmysqlclient']
define_macros: [('version_info', (2, 2, 1, 'final', 0)), ('version', '2.2.1')]
running bdist_wheel
running build
running build_py
creating build
creating build/lib.macosx-12-arm64-cpython-311
creating build/lib.macosx-12-arm64-cpython-311/MySQLdb
copying src/MySQLdb/release.py -> build/lib.macosx-12-arm64-cpython-311/MySQLdb
copying src/MySQLdb/cursors.py -> build/lib.macosx-12-arm64-cpython-311/MySQLdb
copying src/MySQLdb/connections.py -> build/lib.macosx-12-arm64-cpython-311/MySQLdb
copying src/MySQLdb/init.py -> build/lib.macosx-12-arm64-cpython-311/MySQLdb
copying src/MySQLdb/times.py -> build/lib.macosx-12-arm64-cpython-311/MySQLdb
copying src/MySQLdb/converters.py -> build/lib.macosx-12-arm64-cpython-311/MySQLdb
copying src/MySQLdb/_exceptions.py -> build/lib.macosx-12-arm64-cpython-311/MySQLdb
creating build/lib.macosx-12-arm64-cpython-311/MySQLdb/constants
copying src/MySQLdb/constants/FLAG.py -> build/lib.macosx-12-arm64-cpython-311/MySQLdb/constants
copying src/MySQLdb/constants/CLIENT.py -> build/lib.macosx-12-arm64-cpython-311/MySQLdb/constants
copying src/MySQLdb/constants/init.py -> build/lib.macosx-12-arm64-cpython-311/MySQLdb/constants
copying src/MySQLdb/constants/ER.py -> build/lib.macosx-12-arm64-cpython-311/MySQLdb/constants
copying src/MySQLdb/constants/CR.py -> build/lib.macosx-12-arm64-cpython-311/MySQLdb/constants
copying src/MySQLdb/constants/FIELD_TYPE.py -> build/lib.macosx-12-arm64-cpython-311/MySQLdb/constants
running egg_info
writing src/mysqlclient.egg-info/PKG-INFO
writing dependency_links to src/mysqlclient.egg-info/dependency_links.txt
writing top-level names to src/mysqlclient.egg-info/top_level.txt
reading manifest file 'src/mysqlclient.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
adding license file 'LICENSE'
writing manifest file 'src/mysqlclient.egg-info/SOURCES.txt'
copying src/MySQLdb/mysql.c -> build/lib.macosx-12-arm64-cpython-311/MySQLdb
running build_ext
building 'MySQLdb.mysql' extension
creating build/temp.macosx-12-arm64-cpython-311
creating build/temp.macosx-12-arm64-cpython-311/src
creating build/temp.macosx-12-arm64-cpython-311/src/MySQLdb
clang -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.sdk "-Dversion_info=(2, 2, 1, 'final', 0)" -D__version
=2.2.1 -I/opt/homebrew/opt/python@3.11/Frameworks/Python.framework/Versions/3.11/include/python3.11 -c src/MySQLdb/_mysql.c -o build/temp.macosx-12-arm64-cpython-311/src/MySQLdb/_mysql.o -I/opt/homebrew/Cellar/mysql/8.3.0/include/mysql -std=c99
src/MySQLdb/_mysql.c:527:9: error: call to undeclared function 'mysql_ssl_set'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
mysql_ssl_set(&(self->connection), key, cert, ca, capath, cipher);
^
src/MySQLdb/_mysql.c:527:9: note: did you mean 'mysql_close'?
/opt/homebrew/Cellar/mysql/8.3.0/include/mysql/mysql.h:797:14: note: 'mysql_close' declared here
void STDCALL mysql_close(MYSQL *sock);
^
src/MySQLdb/_mysql.c:1795:9: error: call to undeclared function 'mysql_kill'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
r = mysql_kill(&(self->connection), pid);
^
src/MySQLdb/_mysql.c:1795:9: note: did you mean 'mysql_ping'?
/opt/homebrew/Cellar/mysql/8.3.0/include/mysql/mysql.h:525:13: note: 'mysql_ping' declared here
int STDCALL mysql_ping(MYSQL *mysql);
^
src/MySQLdb/_mysql.c:2011:9: error: call to undeclared function 'mysql_shutdown'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
r = mysql_shutdown(&(self->connection), SHUTDOWN_DEFAULT);
^
3 errors generated.
error: command '/usr/bin/clang' failed with exit code 1
[end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for mysqlclient
Failed to build mysqlclient
ERROR: Could not build wheels for mysqlclient, which is required to install pyproject.toml-based projects

@etripier, @methane Still getting same error.

Issue is closed when fix is committed in main branch. not when fix is released.
So don't expect you can see fix from pip install when issue is closed. You need install from main branch, not from PyPI.

Anyway, I will make new release soon.