django.db.utils.OperationalError:(2013年,“握手时与MySQL服务器的连接丢失:读取初始通信数据包”,系统错误:0”)

时间:2019-07-03 15:11:26

标签: python mysql django

我正在django中开发一个应用程序以将其推送到Heroku,并且尝试将mysql中的数据库迁移到heroku时,我pip安装了mysql-python,并且在尝试运行服务器时遇到了以下错误:

  

django.db.utils.OperationalError:(2013年,“与MySQL的连接断开   系统位于“握手:读取初始通信数据包”的服务器,系统   错误:0“)

(我启用了虚拟环境)。
奇怪的是,即使我已经安装了该软件包,该软件包也安装了python。
我发现它与django和我先前安装的几个模块(包括pip)完全无关!

我重新安装了模块,但是现在当我运行服务器时,上面出现了该错误。
如果我从另一个应用程序目录运行服务器,则数据库可以正常运行。
可能与我安装在目录中的东西有关,或者显然被奇怪的软件包覆盖了吗?

这是我的点冻结结果:

certifi==2019.6.16<br>
dj-database-url==0.5.0<br>
Django==2.2.3<br>
django-heroku==0.3.1<br>
gunicorn==19.9.0<br>
mysql-connector-python==8.0.16<br>
mysqlclient==1.4.2.post1<br>
protobuf==3.6.0<br>
psycopg2==2.8.3<br>
PyMySQL==0.9.3<br>
python-decouple==3.1<br>
pytz==2019.1<br>
six==1.12.0<br>
sqlparse==0.3.0<br>
whitenoise==4.1.2<br>
wincertstore==0.2<br>

我现在将删除该项目,并尝试重新构建它,只要我了解,搞砸了该项目的就是我尝试安装mysql-python。

  

使用缓存收集mysql-python   https://files.pythonhosted.org/packages/a5/e9/51b544da85a36a68debe7a7091f068d802fc515a3a202652828c73453cad/MySQL-python-1.2.5.zip   用于收集软件包的构建轮:mysql-python构建轮   对于mysql-python(setup.py)...错误错误:来自以下位置的完整输出   命令'C:\ Applicazioni_Tommaso \ Anaconda3 \ envs \ met3 \ python.exe'-u -c   '导入设置工具,   tokenize; 文件 ='“'”'C:\ Users \ Tommaso \ AppData \ Local \ Temp \ pip-install-yr8h0ec1 \ mysql-python \ setup.py'“'”'; f = getattr(tokenize,   '“”“'open'”'“,打开)(文件); code = f.read()。replace('”'“'\ r \ n'”'“',   '“'”'\\ n'“'”'); f.close(); exec(compile(code, file ,'“'”'exec'“'”')))'   bdist_wheel -d   'C:\ Users \ Tommaso \ AppData \ Local \ Temp \ pip-wheel-ywwxryy8'--python-tag   cp37:错误:正在运行bdist_wheel正在运行构建正在运行build_py   创建build创建build \ lib.win-amd64-3.7复制   _mysql_exceptions.py-> build \ lib.win-amd64-3.7创建build \ lib.win-amd64-3.7 \ MySQLdb复制MySQLdb__init__.py->   build \ lib.win-amd64-3.7 \ MySQLdb复制MySQLdb \ converters.py->   build \ lib.win-amd64-3.7 \ MySQLdb复制MySQLdb \ connections.py->   build \ lib.win-amd64-3.7 \ MySQLdb复制MySQLdb \ cursors.py->   build \ lib.win-amd64-3.7 \ MySQLdb复制MySQLdb \ release.py->   build \ lib.win-amd64-3.7 \ MySQLdb复制MySQLdb \ times.py->   build \ lib.win-amd64-3.7 \ MySQLdb创建   build \ lib.win-amd64-3.7 \ MySQLdb \ constant复制   MySQLdb \ constants__init __。py->   build \ lib.win-amd64-3.7 \ MySQLdb \ constant复制   MySQLdb \ constants \ CR.py-> build \ lib.win-amd64-3.7 \ MySQLdb \ constants
  复制MySQLdb \ constants \ FIELD_TYPE.py->   build \ lib.win-amd64-3.7 \ MySQLdb \ constant复制   MySQLdb \ constants \ ER.py-> build \ lib.win-amd64-3.7 \ MySQLdb \ constants
  复制MySQLdb \ constants \ FLAG.py->   build \ lib.win-amd64-3.7 \ MySQLdb \ constant复制   MySQLdb \ constants \ REFRESH.py->   build \ lib.win-amd64-3.7 \ MySQLdb \ constant复制   MySQLdb \ constants \ CLIENT.py->   build \ lib.win-amd64-3.7 \ MySQLdb \ constant运行build_ext
  建立'_mysql'扩展名,建立build \ temp.win-amd64-3.7
  创建build \ temp.win-amd64-3.7 \发布C:\ Program Files   (x86)\ Microsoft Visual   Studio \ 2017 \ BuildTools \ VC \ Tools \ MSVC \ 14.16.27023 \ bin \ HostX86 \ x64 \ cl.exe   / c / nologo / Ox / W3 / GL / DNDEBUG / MD -Dversion_info =(1,2,5,'final',1)   -D__version __ = 1.2.5“ -IC:\ Program Files(x86)\ MySQL \ MySQL Connector C 6.0.2 \ include“ -IC:\ Applicazioni_Tommaso \ Anaconda3 \ envs \ met3 \ include -IC:\ Applicazioni_Tommaso \ Anaconda3 \ envs \ met3 \ include“ -IC:\ Program Files(x86)\ Microsoft Visual   Studio \ 2017 \ BuildTools \ VC \ Tools \ MSVC \ 14.16.27023 \ include“   “ -IC:\ Program Files(x86)\ Windows Kits \ 10 \ include \ 10.0.10240.0 \ ucrt”   “ -IC:\ Program Files(x86)\ Windows Kits \ 8.1 \ include \ shared”   “ -IC:\ Program文件(x86)\ Windows Kits \ 8.1 \ include \ um”“ -IC:\ Program   文件(x86)\ Windows Kits \ 8.1 \ include \ winrt“” -IC:\ Program Files   (x86)\ Windows Kits \ 8.1 \ include \ cppwinrt“ /Tc_mysql.c   /Fobuild\temp.win-amd64-3.7\Release_mysql.obj / Zl _mysql.c
  _mysql.c(42):致命错误C1083:不可能包含的所有文件:'config-win.h':无此类文件或目录错误:命令   'C:\ Program Files(x86)\ Microsoft Visual   Studio \ 2017 \ BuildTools \ VC \ Tools \ MSVC \ 14.16.27023 \ bin \ HostX86 \ x64 \ cl.exe'   失败,退出状态为2 ----------------------------------------
  错误:mysql-python运行setup.py clean的构建轮子失败   对于mysql-python无法构建mysql-python安装收集   软件包:mysql-python正在运行setup.py为mysql-python安装...   错误       错误:命令'C:\ Applicazioni_Tommaso \ Anaconda3 \ envs \ met3 \ python.exe'的完整输出-u -c'import   设置工具   tokenize; 文件 ='“'”'C:\ Users \ Tommaso \ AppData \ Local \ Temp \ pip-install-yr8h0ec1 \ mysql-python \ setup.py'“'”'; f = getattr(tokenize,   '“”“'open'”'“,打开)(文件); code = f.read()。replace('”'“'\ r \ n'”'“',   '“'”'\\ n'“'”'); f.close(); exec(compile(code, file ,'“'”'exec'“'”')))'   安装-记录   'C:\ Users \ Tommaso \ AppData \ Local \ Temp \ pip-record-dwqliwhp \ install-record.txt'   -单一版本-外部管理-编译:       错误:正在运行安装       运行构建       运行build_py       创建版本       创建build \ lib.win-amd64-3.7       复制_mysql_exceptions.py-> build \ lib.win-amd64-3.7       创建build \ lib.win-amd64-3.7 \ MySQLdb       复制MySQLdb__init__.py-> build \ lib.win-amd64-3.7 \ MySQLdb       复制MySQLdb \ converters.py-> build \ lib.win-amd64-3.7 \ MySQLdb       复制MySQLdb \ connections.py-> build \ lib.win-amd64-3.7 \ MySQLdb       复制MySQLdb \ cursors.py-> build \ lib.win-amd64-3.7 \ MySQLdb       复制MySQLdb \ release.py-> build \ lib.win-amd64-3.7 \ MySQLdb       复制MySQLdb \ times.py-> build \ lib.win-amd64-3.7 \ MySQLdb       创建build \ lib.win-amd64-3.7 \ MySQLdb \ constants       复制MySQLdb \ constants__init __。py-> build \ lib.win-amd64-3.7 \ MySQLdb \ constants       复制MySQLdb \ constants \ CR.py-> build \ lib.win-amd64-3.7 \ MySQLdb \ constants       复制MySQLdb \ constants \ FIELD_TYPE.py-> build \ lib.win-amd64-3.7 \ MySQLdb \ constants       复制MySQLdb \ constants \ ER.py-> build \ lib.win-amd64-3.7 \ MySQLdb \ constants       复制MySQLdb \ constants \ FLAG.py-> build \ lib.win-amd64-3.7 \ MySQLdb \ constants       复制MySQLdb \ constants \ REFRESH.py-> build \ lib.win-amd64-3.7 \ MySQLdb \ constants       复制MySQLdb \ constants \ CLIENT.py-> build \ lib.win-amd64-3.7 \ MySQLdb \ constants       运行build_ext       建立'_mysql'扩展       创建build \ temp.win-amd64-3.7       创建build \ temp.win-amd64-3.7 \ Release       C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ BuildTools \ VC \ Tools \ MSVC \ 14.16.27023 \ bin \ HostX86 \ x64 \ cl.exe   / c / nologo / Ox / W3 / GL / DNDEBUG / MD -Dversion_info =(1,2,5,'final',1)   -D__version __ = 1.2.5“ -IC:\ Program Files(x86)\ MySQL \ MySQL Connector C 6.0.2 \ include“ -IC:\ Applicazioni_Tommaso \ Anaconda3 \ envs \ met3 \ include -IC:\ Applicazioni_Tommaso \ Anaconda3 \ envs \ met3 \ include“ -IC:\ Program Files(x86)\ Microsoft Visual   Studio \ 2017 \ BuildTools \ VC \ Tools \ MSVC \ 14.16.27023 \ include“   “ -IC:\ Program Files(x86)\ Windows Kits \ 10 \ include \ 10.0.10240.0 \ ucrt”   “ -IC:\ Program Files(x86)\ Windows Kits \ 8.1 \ include \ shared”   “ -IC:\ Program文件(x86)\ Windows Kits \ 8.1 \ include \ um”“ -IC:\ Program   文件(x86)\ Windows Kits \ 8.1 \ include \ winrt“” -IC:\ Program Files   (x86)\ Windows Kits \ 8.1 \ include \ cppwinrt“ /Tc_mysql.c   /Fobuild\temp.win-amd64-3.7\Release_mysql.obj / Zl       _mysql.c       _mysql.c(42):致命错误C1083:可能的非夜间文件包含:'config-win.h':没有此类文件或目录       错误:命令'C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ BuildTools \ VC \ Tools \ MSVC \ 14.16.27023 \ bin \ HostX86 \ x64 \ cl.exe'   失败,退出状态为2       ----------------------------------------错误:命令“'C:\ Applicazioni_Tommaso \ Anaconda3 \ envs \ met3 \ python.exe'-u -c   '导入设置工具,   tokenize; 文件 ='“'”'C:\ Users \ Tommaso \ AppData \ Local \ Temp \ pip-install-yr8h0ec1 \ mysql-python \ setup.py'“'”'; f = getattr(tokenize,   '“”“'open'”'“,打开)(文件); code = f.read()。replace('”'“'\ r \ n'”'“',   '“'”'\\ n'“'”'); f.close(); exec(compile(code, file ,'“'”'exec'“'”')))'   安装-记录   'C:\ Users \ Tommaso \ AppData \ Local \ Temp \ pip-record-dwqliwhp \ install-record.txt'   --single-version-externally-managed --compile“失败,错误代码为1   C:\ Users \ Tommaso \ AppData \ Local \ Temp \ pip-install-yr8h0ec1 \ mysql-python \

4 个答案:

答案 0 :(得分:0)

这可能是一个Firewall问题。确保正在运行MySQL的端口已打开,以允许来自IP运行所在的App的入站流量。

答案 1 :(得分:0)

更新:

事实证明,尝试

pip install mysql-python

是完全弄乱了我的项目的东西 我从计算机上卸下了所有已安装的模块: pip,conda,python,django ...

答案 2 :(得分:0)

更新: 错误的命令,就是

  

pip安装mysql-python

已将我的python默认路径设置为2.7而不是3.7。

要修复此问题,我必须(Windows 10):

Cortana>搜索栏>键入“ env”>更改系统的环境变量>环境变量>选择“路径”> change>

创建并移动到顶部(或简单地移动到顶部)您安装python 3.7的路径。

保存>关闭anaconda。 这使得pyhton及其模块再次工作。 我不得不重新安装pip,现在它又可以工作了。 但是当我打开虚拟环境时,我在mysql中连接的数据库出现了问题。

答案 3 :(得分:0)

已解决

修复了我在previous answer中描述的内容后, 我发现Heroku在管理mysql数据库方面存在一些问题,即使与附加的ClearDB连接也是如此。 因此,我在Postgresql中重建了数据库,因此不再需要mysql python模块。 这使我不再迷恋Django和Heroku之间的先前冲突。