简体   繁体   English

连接 django 和 mysql 时出现操作错误

[英]OperationalError while connecting django and mysql

I have a problem connecting the mysql database with django.我在将 mysql 数据库与 django 连接时遇到问题。 I have already tried to find solutions on the internet but nothing helped me.我已经尝试在互联网上找到解决方案,但没有任何帮助。 When I change the code in the 'setting.py' file and then enter 'python manage.py migrate' in the console:当我更改“setting.py”文件中的代码,然后在控制台中输入“python manage.py migrate”时:

(blog) PS C:\Users\kacpe\Dev\blog\blog\blog> python manage.py migrate                                                   Traceback (most recent call last):
  File "C:\Users\kacpe\Dev\blog\blog\lib\site-packages\django\db\backends\base\base.py", line 217, in ensure_connection
    self.connect()
  File "C:\Users\kacpe\Dev\blog\blog\lib\site-packages\django\db\backends\base\base.py", line 195, in connect
    self.connection = self.get_new_connection(conn_params)
  File "C:\Users\kacpe\Dev\blog\blog\lib\site-packages\django\db\backends\mysql\base.py", line 227, in get_new_connection
    return Database.connect(**conn_params)
  File "C:\Users\kacpe\Dev\blog\blog\lib\site-packages\MySQLdb\__init__.py", line 84, in Connect
    return Connection(*args, **kwargs)
  File "C:\Users\kacpe\Dev\blog\blog\lib\site-packages\MySQLdb\connections.py", line 166, 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\kacpe\Dev\blog\blog\lib\site-packages\django\core\management\__init__.py", line 381, in execute_from_command_line
    utility.execute()
  File "C:\Users\kacpe\Dev\blog\blog\lib\site-packages\django\core\management\__init__.py", line 375, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Users\kacpe\Dev\blog\blog\lib\site-packages\django\core\management\base.py", line 323, in run_from_argv
    self.execute(*args, **cmd_options)
  File "C:\Users\kacpe\Dev\blog\blog\lib\site-packages\django\core\management\base.py", line 361, in execute
    self.check()
  File "C:\Users\kacpe\Dev\blog\blog\lib\site-packages\django\core\management\base.py", line 387, in check
    all_issues = self._run_checks(
  File "C:\Users\kacpe\Dev\blog\blog\lib\site-packages\django\core\management\commands\migrate.py", line 64, in _run_checks
    issues = run_checks(tags=[Tags.database])
  File "C:\Users\kacpe\Dev\blog\blog\lib\site-packages\django\core\checks\registry.py", line 72, in run_checks
    new_errors = check(app_configs=app_configs)
  File "C:\Users\kacpe\Dev\blog\blog\lib\site-packages\django\core\checks\database.py", line 10, in check_database_backends
    issues.extend(conn.validation.check(**kwargs))
  File "C:\Users\kacpe\Dev\blog\blog\lib\site-packages\django\db\backends\mysql\validation.py", line 9, in check
    issues.extend(self._check_sql_mode(**kwargs))
  File "C:\Users\kacpe\Dev\blog\blog\lib\site-packages\django\db\backends\mysql\validation.py", line 13, in _check_sql_mode
    with self.connection.cursor() as cursor:
  File "C:\Users\kacpe\Dev\blog\blog\lib\site-packages\django\db\backends\base\base.py", line 256, in cursor
    return self._cursor()
  File "C:\Users\kacpe\Dev\blog\blog\lib\site-packages\django\db\backends\base\base.py", line 233, in _cursor
    self.ensure_connection()
  File "C:\Users\kacpe\Dev\blog\blog\lib\site-packages\django\db\backends\base\base.py", line 217, in ensure_connection
    self.connect()
  File "C:\Users\kacpe\Dev\blog\blog\lib\site-packages\django\db\utils.py", line 89, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "C:\Users\kacpe\Dev\blog\blog\lib\site-packages\django\db\backends\base\base.py", line 217, in ensure_connection
    self.connect()
  File "C:\Users\kacpe\Dev\blog\blog\lib\site-packages\django\db\backends\base\base.py", line 195, in connect
    self.connection = self.get_new_connection(conn_params)
  File "C:\Users\kacpe\Dev\blog\blog\lib\site-packages\django\db\backends\mysql\base.py", line 227, in get_new_connection
    return Database.connect(**conn_params)
  File "C:\Users\kacpe\Dev\blog\blog\lib\site-packages\MySQLdb\__init__.py", line 84, in Connect
    return Connection(*args, **kwargs)
  File "C:\Users\kacpe\Dev\blog\blog\lib\site-packages\MySQLdb\connections.py", line 166, in __init__
    super(Connection, self).__init__(*args, **kwargs2)
django.db.utils.OperationalError: (2059, <NULL>)

It's frustrating because I can't fix it and I'm just starting to learn Django.这很令人沮丧,因为我无法修复它,而且我刚刚开始学习 Django。 Thank you in advance for your help.预先感谢您的帮助。

My Database code from 'setting.py':我的来自“setting.py”的数据库代码:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'blog',
        'USER': 'Shiraga',
        'PASSWORD': 'MYPASSWORD',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}

Check your database for permissions, log into MySQL and run检查数据库的权限,登录 MySQL 并运行

GRANT ALL ON *.* TO 'root'@'localhost';

FLUSH PRIVILEGES;

Please do post what your Django settings.py contains.请发布您的 Django settings.py 包含的内容。

Okey, I was able to fix the problem after a long fight.好的,经过长时间的战斗,我能够解决问题。 I solved it by switching from Python 3.8 to 3.7.5.我通过从 Python 3.8 切换到 3.7.5 解决了这个问题。 Previous to 3.8 when installing mysqlclient via 'pip install mysqlclient' an error occurred and I was forced to download a file from the site.在 3.8 之前,通过“pip install mysqlclient”安装 mysqlclient 时发生错误,我被迫从该站点下载文件。 In version 3.7.5 with renewal of the created environment this problem did not occur and the migration was successful.在更新创建环境的 3.7.5 版本中,没有出现此问题,迁移成功。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM