django之 解决报错django.db.utils.OperationalError: (2002, “Can‘t connect to server on ‘localhost‘

当我打开PyCharm的时候,启动运行django框架,发现PyCharm报错了,报了这么一个错误:

Exception in thread django-main-thread:
Traceback (most recent call last):
  File "D:\env\first\lib\site-packages\django\db\backends\base\base.py", line 220, in ensure_connection
    self.connect()
  File "D:\env\first\lib\site-packages\django\utils\asyncio.py", line 26, in inner
    return func(*args, **kwargs)
  File "D:\env\first\lib\site-packages\django\db\backends\base\base.py", line 197, in connect
    self.connection = self.get_new_connection(conn_params)
  File "D:\env\first\lib\site-packages\django\utils\asyncio.py", line 26, in inner
    return func(*args, **kwargs)
  File "D:\env\first\lib\site-packages\django\db\backends\mysql\base.py", line 233, in get_new_connection
    return Database.connect(**conn_params)
  File "D:\env\first\lib\site-packages\MySQLdb\__init__.py", line 123, in Connect
    return Connection(*args, **kwargs)
  File "D:\env\first\lib\site-packages\MySQLdb\connections.py", line 185, in __init__
    super().__init__(*args, **kwargs2)
MySQLdb._exceptions.OperationalError: (2002, "Can't connect to server on 'localhost' (10061)")

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

Traceback (most recent call last):
  File "D:\python3.9\lib\threading.py", line 973, in _bootstrap_inner
    self.run()
  File "D:\python3.9\lib\threading.py", line 910, in run
    self._target(*self._args, **self._kwargs)
  File "D:\env\first\lib\site-packages\django\utils\autoreload.py", line 53, in wrapper
    fn(*args, **kwargs)
  File "D:\env\first\lib\site-packages\django\core\management\commands\runserver.py", line 117, in inner_run
    self.check(display_num_errors=True)
  File "D:\env\first\lib\site-packages\django\core\management\base.py", line 392, in check
    all_issues = self._run_checks(
  File "D:\env\first\lib\site-packages\django\core\management\base.py", line 382, in _run_checks
    return checks.run_checks(**kwargs)
  File "D:\env\first\lib\site-packages\django\core\checks\registry.py", line 72, in run_checks
    new_errors = check(app_configs=app_configs)
  File "D:\env\first\lib\site-packages\django\core\checks\model_checks.py", line 34, in check_all_models
    errors.extend(model.check(**kwargs))
  File "D:\env\first\lib\site-packages\django\db\models\base.py", line 1275, in check
    *cls._check_constraints(),
  File "D:\env\first\lib\site-packages\django\db\models\base.py", line 1841, in _check_constraints
    connection.features.supports_table_check_constraints or
  File "D:\env\first\lib\site-packages\django\utils\functional.py", line 48, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "D:\env\first\lib\site-packages\django\db\backends\mysql\features.py", line 93, in supports_column_check_constraints
    if self.connection.mysql_is_mariadb:
  File "D:\env\first\lib\site-packages\django\utils\functional.py", line 48, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "D:\env\first\lib\site-packages\django\db\backends\mysql\base.py", line 363, in mysql_is_mariadb
    return 'mariadb' in self.mysql_server_info.lower()
  File "D:\env\first\lib\site-packages\django\utils\functional.py", line 48, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "D:\env\first\lib\site-packages\django\db\backends\mysql\base.py", line 350, in mysql_server_info
    with self.temporary_connection() as cursor:
  File "D:\python3.9\lib\contextlib.py", line 119, in __enter__
    return next(self.gen)
  File "D:\env\first\lib\site-packages\django\db\backends\base\base.py", line 604, in temporary_connection
    with self.cursor() as cursor:
  File "D:\env\first\lib\site-packages\django\utils\asyncio.py", line 26, in inner
    return func(*args, **kwargs)
  File "D:\env\first\lib\site-packages\django\db\backends\base\base.py", line 260, in cursor
    return self._cursor()
  File "D:\env\first\lib\site-packages\django\db\backends\base\base.py", line 236, in _cursor
    self.ensure_connection()
  File "D:\env\first\lib\site-packages\django\utils\asyncio.py", line 26, in inner
    return func(*args, **kwargs)
  File "D:\env\first\lib\site-packages\django\db\backends\base\base.py", line 220, in ensure_connection
    self.connect()
  File "D:\env\first\lib\site-packages\django\db\utils.py", line 90, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "D:\env\first\lib\site-packages\django\db\backends\base\base.py", line 220, in ensure_connection
    self.connect()
  File "D:\env\first\lib\site-packages\django\utils\asyncio.py", line 26, in inner
    return func(*args, **kwargs)
  File "D:\env\first\lib\site-packages\django\db\backends\base\base.py", line 197, in connect
    self.connection = self.get_new_connection(conn_params)
  File "D:\env\first\lib\site-packages\django\utils\asyncio.py", line 26, in inner
    return func(*args, **kwargs)
  File "D:\env\first\lib\site-packages\django\db\backends\mysql\base.py", line 233, in get_new_connection
    return Database.connect(**conn_params)
  File "D:\env\first\lib\site-packages\MySQLdb\__init__.py", line 123, in Connect
    return Connection(*args, **kwargs)
  File "D:\env\first\lib\site-packages\MySQLdb\connections.py", line 185, in __init__
    super().__init__(*args, **kwargs2)
django.db.utils.OperationalError: (2002, "Can't connect to server on 'localhost' (10061)")

报错如图所示: 

解决思路和步骤:

(1)报的错误最主要是是最后一句:(2002,“无法连接到“localhost”(10061)上的服务器”)

django.db.utils.OperationalError: (2002, "Can't connect to server on 'localhost' (10061)")

这说明MySql数据库可能连接不正常 。

(2)我们先看一下MySql数据库这个应用是已经正在启动,打开电脑左下角的“开始”菜单,直接输入“服务”,就会出现下图所示的情况,

然后我们打开电脑的“服务”,在服务里面找到“MySql”服务,看看MySql的状态是否为运行。

(3) 结果发现我的“MySql”服务没有开启,

我猜想导致PyCharm报错,应该就是这个服务没有开启运行的原因了, 那我们现在试着开启它,看看PyCharm还报不报错。点击“启动此服务”就可以了,就会显示下面这样,说明已经成功启动。

(4)开启之后,再次在PyCharm中重启django项目之后,发现这个报错问题消失了,好了,问题成功解决。

猜你喜欢

转载自blog.csdn.net/qq_45956730/article/details/124927931
今日推荐