O
O
OneLeques2020-05-15 18:39:20
MySQL
OneLeques, 2020-05-15 18:39:20

MySQL DBMS connection error on Django. How to fix?

I'm trying to connect MySQL as a DBMS for my Django project. Django 3.0, Python 3.8, MySQL Server 8, mysqlclient 1.4.6

Created a database + separate user for my project with the following commands

CREATE DATABASE test_db DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE USER 'django'@'localhost' IDENTIFIED BY '1234';
GRANT ALL PRIVILEGES ON test_db.* TO 'django'@'localhost';
FLUSH PRIVILEGES;


Next, I changed the project settings:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test_db',
        'USER': 'django',
        'PASSWORD': '1234',
        'HOST': '127.0.0.1',
        'PORT': '',
    }
}


Then when I try to migrate I get the following error:

Traceback (most recent call last):
  File "C:\Users\Daniil\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\db\backends\base\base.py", line 220, in ensure_connection
    self.connect()
  File "C:\Users\Daniil\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\utils\asyncio.py", line 26, in inner
    return func(*args, **kwargs)
  File "C:\Users\Daniil\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\db\backends\base\base.py", line 197, in connect
    self.connection = self.get_new_connection(conn_params)
  File "C:\Users\Daniil\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\utils\asyncio.py", line 26, in inner
    return func(*args, **kwargs)
  File "C:\Users\Daniil\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\db\backends\mysql\base.py", line 233, in get_new_connection
    return Database.connect(**conn_params)
  File "C:\Users\Daniil\AppData\Local\Programs\Python\Python38-32\lib\site-packages\MySQLdb\__init__.py", line 84, in Connect
    return Connection(*args, **kwargs)
  File "C:\Users\Daniil\AppData\Local\Programs\Python\Python38-32\lib\site-packages\MySQLdb\connections.py", line 179, in __init__
    super(Connection, self).__init__(*args, **kwargs2)
MySQLdb._exceptions.OperationalError: (2059, <NULL>)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "manage.py", line 21, in <module>
    main()
  File "manage.py", line 17, in main
    execute_from_command_line(sys.argv)
  File "C:\Users\Daniil\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\management\__init__.py", line 401, in execute_from_command_line
    utility.execute()
  File "C:\Users\Daniil\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\management\__init__.py", line 395, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Users\Daniil\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\management\base.py", line 328, in run_from_argv
    self.execute(*args, **cmd_options)
  File "C:\Users\Daniil\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\management\base.py", line 366, in execute
    self.check()
  File "C:\Users\Daniil\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\management\base.py", line 392, in check
    all_issues = self._run_checks(
  File "C:\Users\Daniil\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\management\commands\migrate.py", line 63, in _run_checks
    issues = run_checks(tags=[Tags.database])
  File "C:\Users\Daniil\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\checks\registry.py", line 72, in run_checks
    new_errors = check(app_configs=app_configs)
  File "C:\Users\Daniil\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\checks\database.py", line 10, in check_database_backends
    issues.extend(conn.validation.check(**kwargs))
  File "C:\Users\Daniil\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\db\backends\mysql\validation.py", line 9, in check
    issues.extend(self._check_sql_mode(**kwargs))
  File "C:\Users\Daniil\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\db\backends\mysql\validation.py", line 13, in _check_sql_mode
    with self.connection.cursor() as cursor:
  File "C:\Users\Daniil\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\utils\asyncio.py", line 26, in inner
    return func(*args, **kwargs)
  File "C:\Users\Daniil\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\db\backends\base\base.py", line 260, in cursor
    return self._cursor()
  File "C:\Users\Daniil\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\db\backends\base\base.py", line 236, in _cursor
    self.ensure_connection()
  File "C:\Users\Daniil\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\utils\asyncio.py", line 26, in inner
    return func(*args, **kwargs)
  File "C:\Users\Daniil\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\db\backends\base\base.py", line 220, in ensure_connection
    self.connect()
  File "C:\Users\Daniil\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\db\utils.py", line 90, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "C:\Users\Daniil\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\db\backends\base\base.py", line 220, in ensure_connection
    self.connect()
  File "C:\Users\Daniil\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\utils\asyncio.py", line 26, in inner
    return func(*args, **kwargs)
  File "C:\Users\Daniil\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\db\backends\base\base.py", line 197, in connect
    self.connection = self.get_new_connection(conn_params)
  File "C:\Users\Daniil\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\utils\asyncio.py", line 26, in inner
    return func(*args, **kwargs)
  File "C:\Users\Daniil\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\db\backends\mysql\base.py", line 233, in get_new_connection
    return Database.connect(**conn_params)
  File "C:\Users\Daniil\AppData\Local\Programs\Python\Python38-32\lib\site-packages\MySQLdb\__init__.py", line 84, in Connect
    return Connection(*args, **kwargs)
  File "C:\Users\Daniil\AppData\Local\Programs\Python\Python38-32\lib\site-packages\MySQLdb\connections.py", line 179, in __init__
    super(Connection, self).__init__(*args, **kwargs2)
django.db.utils.OperationalError: (2059, <NULL>)


PS
I'm new to Django and have been looking for a solution to this problem for quite some time now. Thanks in advance

Answer the question

In order to leave comments, you need to log in

1 answer(s)
O
OneLeques, 2020-05-15
@OneLeques

To solve the problem, you need to change the plugin for django (username)
Commands to change the plugin, password and reload privileges

ALTER USER 'django'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
FLUSH PRIVILEGES;

After that, you need to change the settings accordingly (change the password)

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question