Нет модуля с именем '_mysql_connector' при использовании Django и mysql-connector-python 8.0.32

У меня есть веб-сайт Django 4.1, который прекрасно работал в контейнере Docker с MariaDB 10.5. Я обновил только модуль mysql-connector-python с 8.0.29 до 8.0.32, но теперь, когда я запускаю веб-контейнер, на котором работает dev-сервер Django, я получаю:

myproject_web | Traceback (most recent call last):
myproject_web |   File "/root/.local/share/virtualenvs/code-_Py8Si6I/lib/python3.8/site-packages/mysql/connector/connection_cext.py", line 64, in <module>
myproject_web |     import _mysql_connector
myproject_web | ModuleNotFoundError: No module named '_mysql_connector'
myproject_web | 
myproject_web | The above exception was the direct cause of the following exception:
myproject_web | 
myproject_web | Traceback (most recent call last):
myproject_web |   File "/root/.local/share/virtualenvs/code-_Py8Si6I/lib/python3.8/site-packages/mysql/connector/django/base.py", line 60, in <module>
myproject_web |     from mysql.connector.connection_cext import CMySQLConnection
myproject_web |   File "/root/.local/share/virtualenvs/code-_Py8Si6I/lib/python3.8/site-packages/mysql/connector/connection_cext.py", line 81, in <module>
myproject_web |     raise ImportError(
myproject_web | ImportError: MySQL Connector/Python C Extension not available (No module named '_mysql_connector')
myproject_web | 
myproject_web | The above exception was the direct cause of the following exception:
...

Я не уверен, где кроется ошибка, имея отрывочное представление о серверах баз данных и их коннекторах и т.д. Если я понижу версию mysql-connector-python до 8.0.29, то она снова работает (я не могу использовать 8.0.30 или 8.0.31 из-за проблемы с utf8, которая, я надеюсь, будет исправлена в 8.0.32). Вот его журнал изменений.

Мой docker-compose.yml имеет следующее для контейнера базы данных:

services:
  db:
    container_name: myproject_db
    env_file: .env
    image: mariadb:10.5
    ports:
      - 4306:3306
    restart: unless-stopped
    volumes:
      - ./docker/db/init:/docker-entrypoint-initdb.d
      - mysql_data:/var/lib/mysql

И мой веб-контейнер Dockerfile запускается:

FROM python:3.8-slim-bullseye

RUN apt-get update \
    && apt-get install -y build-essential git libpq-dev libmariadb-dev mariadb-client --no-install-recommends \
    && rm -rf /var/lib/apt/lists/* /usr/share/doc /usr/share/man \
    && apt-get clean

Та же проблема при запуске Django 3.2-4.1 в Docker, на Mac M1: "No module named '_mysql_connector'"

mysql-connector-python==8.0.31 и ниже работает корректно на всех системах (родной и Docker).

mysql-connector-python==8.0.32 корректно работает в Docker под Win10 и успешно развертывается на наших родных серверах Ubuntu. Только Mac M1 выдает ошибку.

Контейнер Docker на Win10 инициализируется с MySQL Docker Image 8.0.31-1.2.10-server, тогда как тот же контейнер Docker на Mac M1 показывает "MySQL Docker Image 8.0.32-1.2.11-server".

Простите, это всего лишь подсказки, но это похоже на еще одну проблему зависимости от M1.

У меня возникла эта проблема с Django 4.2.6 и mysql-connector-python 8.1.0. Проблема была решена путем понижения версии до mysql-connector-python 8.0.31

Вернуться на верх