当我打开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”服务没有开启,
扫描二维码关注公众号,回复:
14239470 查看本文章
我猜想导致PyCharm报错,应该就是这个服务没有开启运行的原因了, 那我们现在试着开启它,看看PyCharm还报不报错。点击“启动此服务”就可以了,就会显示下面这样,说明已经成功启动。
(4)开启之后,再次在PyCharm中重启django项目之后,发现这个报错问题消失了,好了,问题成功解决。