Попытка подключить Django к MySQL. Ошибка подключения при миграции

Я работаю над Django уже несколько недель. На данный момент я сделал 2 небольших проекта. Сейчас я попытался подключить Django к базе данных MySQL.

Сначала я начал новый проект. Затем создал новое приложение и обновил приложение в файле settings.py После этого изменил базу данных в том же файле settings.py с моими настройками, Сделал небольшую модель, Установил все необходимые aps, MySQLclient и т.д, Сделал первую миграцию успешно с помощью 'Makemigration' Пока все хорошо!

Далее я попытался сделать вторую миграцию, как в инструкции.

Затем появляется сообщение об ошибке:

"ошибка 111, не удается подключиться к базе данных"

Внесены некоторые изменения в файл настроек, включая режим SQL 'strict trans tables'.

Теперь он показывает мне ошибку: Не удается подключиться к локальному серверу MySQL через сокет ... Отсутствует файл .sock.

Я просмотрел каталог и не обнаружил такого файла.

В файле my.conf файл другой!!! И существует!

Что происходит и что делать?

Вы достигли проблемы, которая указывает на проблему с MySQL. На данном этапе имеет смысл попытаться подключиться к MySQL напрямую, потому что если это удастся, то вы будете уверены, что ваши проблемы находятся на стороне настроек приложения, а если это не удастся, то вам нужно сначала решить проблему с подключением MySQL и только потом переключиться на настройки вашего приложения.

Теперь ошибка явно указывает на то, что файл сокетов MySQL не может быть найден.

Сначала давайте проверим, запущен ли MySQL вообще. В Ubuntu Linux команда для этого выглядит следующим образом

sudo service mysql status

Если вы используете в качестве ОС что-то другое, то, конечно, вам придется действовать несколько иначе.

В Ubuntu, если команда выше дает что-то вроде

Unit mysql.service не может быть найден.

, то служба не существует и вам необходимо ее установить.

В противном случае, если служба существует, но не запущена, вам нужно запустить ее, если вы в состоянии. Если нет, то вам необходимо провести некоторые работы по обслуживанию.

Наконец, если служба MySQL успешно запущена, попробуйте подключиться к ней через cli, например:

mysql -u <youruser> -p

-p в конце означает, что будет использоваться пароль, поэтому после выполнения команды выше вам нужно будет ввести пароль (если все пройдет успешно).

Если вы получите ту же ошибку, связанную с файлом сокета (что предположительно произойдет), то вам нужно будет найти расположение файла сокета (.sock) и обновить файл cnf MySQL (/etc/my.cnf в Linux) так, чтобы он учитывал правильное расположение файла сокета:

socket=/var/lib/mysql/mysql.sock

Наконец-то проект Django смог начать использовать базу данных MySQL!!!

Изменения в файле setting.py такие же, как и раньше, а именно:

        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'django_db',
        'USER': 'username',
        'PASSWORD': 'password',
        'HOST': 'localhost',
        'PORT': '3306',

единственное, что нужно было сделать в дополнение к этому, это включить путь к файлу my.cnf вручную:

        'OPTIONS': {
            'read_default_file': '/opt/lampp/etc/my.cnf',
        },

Очевидно, это и было причиной того, что в первую очередь был ошибочно указан путь к файлу сокета.

Но почему вообще возникает эта ошибка, я не знаю. Возможно, где-то после установки был указан другой путь, но я не знаю, где этот путь, указывающий на другую директорию отдельно файла сокета, или на другой путь для файла my.cnf.

При работе с базой данных PostgreSQL подключение было выполнено настолько просто, что потребовалось только 1-е изменение в файле settings.py.

После этого дополнительные миграции были выполнены без каких-либо нарушений, как и учетная запись суперпользователя.

Сайт-источник, который я смог использовать в качестве шпаргалки для полного процесса: https://www.digitalocean.com/community/tutorials/how-to-create-a-django-app-and-connect-it-to-a-database

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