我在Windows10上使用Python3.5.1、MySQLClient1.3.9(支持Python3的MySQLdb分支)和Mariadb10.1(64位)。
当我跑的时候

import MySQLdb
con = MySQLdb.connect(user=my_user, passwd=my_pass, db=my_db)

Python崩溃了。
在pycharm,我也收到了这个信息
Process finished with exit code -1073741819 (0xC0000005)

我没有其他的错误。这与我使用不正确的凭据运行相同的语句时的情况不同:
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Program Files\Python35\lib\site-packages\MySQLdb\__init__.py", line 81, in Connect
    return Connection(*args, **kwargs)
  File "C:\Program Files\Python35\lib\site-packages\MySQLdb\connections.py", line 191, in __init__
    super(Connection, self).__init__(*args, **kwargs2)
_mysql_exceptions.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)")

在运行Python 3.4、mysqlclient 1.3.9和MariaDB 10.1的CentOS服务器上不会发生此错误。
我试过按照this question的建议使用旧版本的MariaDB,但没有效果。
是什么导致了这次崩溃和错误报告的神秘缺失,我该如何修复它?
编辑:在我的系统日志中,我找到了以下条目:
概述:
Faulting application name: python.exe, version: 3.5.1150.1013, time stamp: 0x56639598
Faulting module name: python35.dll, version: 3.5.1150.1013, time stamp: 0x56639583
Exception code: 0xc0000005
Fault offset: 0x00000000000e571c
Faulting process id: 0x4a4
Faulting application start time: 0x01d2272a22ae1a1a
Faulting application path: C:\Program Files\Python35\python.exe
Faulting module path: C:\Program Files\Python35\python35.dll
Report Id: 6dd874e6-5ea5-4919-af8b-4880a2c7ac5e
Faulting package full name:
Faulting package-relative application ID:

细节:
- System
  - Provider
   [ Name]  Application Error
  - EventID 1000
   [ Qualifiers]  0
   Level 2
   Task 100
   Keywords 0x80000000000000
  - TimeCreated
   [ SystemTime]  2016-10-15T21:21:48.041795500Z
   EventRecordID 7615
   Channel Application
   Computer PETER-LENOVO
   Security

- EventData
   python.exe
   3.5.1150.1013
   56639598
   python35.dll
   3.5.1150.1013
   56639583
   c0000005
   00000000000e571c
   4a4
   01d2272a22ae1a1a
   C:\Program Files\Python35\python.exe
   C:\Program Files\Python35\python35.dll
   6dd874e6-5ea5-4919-af8b-4880a2c7ac5e

最佳答案

我对pycharm不熟悉,但我认为您的问题是@nemanjap建议的,您的MySQLdb安装。我刚刚经历了一个类似的噩梦(使用Python3.5),所以我希望我能提供帮助。以下是我的建议:
如果尚未安装,请安装pip
https://www.visualstudio.com/downloads安装Visual Studio Community 2015(您只需要Python编译工具)
安装车轮:pip install wheel
http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python下载MySQLdb windows二进制文件,特别是mysqlclient-1.3.8-cp35-cp35m-win32.whl(我也是64位的,但我很谨慎)
如果存在,删除站点包中的MySQL文件,以防万一。
假设您与二进制下载位于同一文件夹中,请运行pip install mysqlclient-1.3.8-cp35-cp35m-win32.whl
如果运气好的话,你应该能联系上。
笔记
在我的机器上,我的连接被立即中止(Got an error reading communication packets在我的error.log中),即使我的凭据是100%正确的。在windows方面,与OP类似,Python只是“崩溃”了,这意味着我重新启动了一个shell,从来没有超过MySQLdb.connect行。即使是try块也不允许进一步执行(因此实际上是崩溃,而不是异常或错误)。考虑到兼容性问题(UNIX工作得很好),我尝试在Windows中调试MySQLdb,一直到import _mysql,这时我意识到这是一个C(编译)问题。
考虑到安装得很好,当我执行pip install MySQLdb-python时,得到了以下结果:

error: Unable to find vcvarsall.bat

这意味着我需要为我的Python版本(3.5)安装编译工具,它包含在vsc215安装中。我重新运行,然后得到以下结果:
Cannot open include file: 'config-win.h'

这意味着我需要一些必要的标题,从这里:http://dev.mysql.com/downloads/connector/c/6.0.html#downloads(再次,32位,只是为了安全起见)。然后我得到了一堆unresolved external symbol错误,意识到我多么讨厌Windows,于是安装了预编译版本。创造了奇迹。
噢,在有人建议使用不同的模块或方法(如mysql-connector)进行连接之前,除了不能解决问题外,通常还有一个限制,即相同的代码(因此,相同的导入模块)应该在Windows和UNIX机器上都工作。加上这个:http://charlesnagy.info/it/python/python-mysqldb-vs-mysql-connector-query-performance
对不起,我的邮件太长了。我需要发泄!祝你好运!

10-07 19:11
查看更多