为什么Python3.5在具有正确凭据的MySQL连接上崩溃?
我正在Windows10上使用Python 3.5.1、mysqlclient 1.3.9(MySQLdb的分支,支持Python 3)和MariaDB 10.1(64位) 当我跑的时候为什么Python3.5在具有正确凭据的MySQL连接上崩溃?,python,mysql,python-3.x,mariadb,Python,Mysql,Python 3.x,Mariadb,我正在Windows10上使用Python 3.5.1、mysqlclient 1.3.9(MySQLdb的分支,支持Python 3)和MariaDB 10.1(64位) 当我跑的时候 import MySQLdb con = MySQLdb.connect(user=my_user, passwd=my_pass, db=my_db) Python崩溃 在pycharm中,我也收到了信息 Process finished with exit code -1073741819 (0xC000
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)")
详情:
- 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
- 从安装Visual Studio Community 2015(您只需要Python编译工具)
- 安装控制盘:
pip安装控制盘
- 从下载MySQLdb windows二进制文件,特别是
(我也是64位的,但我很小心)mysqlclient-1.3.8-cp35-cp35m-win32.whl
- 从站点包中删除MySQLdb文件夹(如果存在),以防万一
- 假设您与二进制下载位于同一文件夹中,请运行
pip安装mysqlclient-1.3.8-cp35-cp35m-win32.whl
注释 在我的机器上,我的连接被立即中止(
在我的error.log
中读取通信数据包时出错),即使我的凭据100%正确。在windows方面,与OP类似,Python只是“崩溃”,这意味着我得到了一个shell重新启动,并且从未越过MySQLdb.connect
行。即使是try
块也不允许进一步执行(因此实际上是崩溃,而不是异常或错误)。考虑到兼容性问题(UNIX运行完全正常),我尝试在Windows中调试MySQLdb
,一直到import\u mysql
,这时我意识到这是一个C(编译)问题
考虑到所有安装都很好,当我执行pip install MySQLdb python
时,我得到了以下信息:
error: Unable to find vcvarsall.bat
Cannot open include file: 'config-win.h'
这意味着我需要为我的Python版本(3.5)安装编译工具,它包含在VSC2015安装中。我重新运行,然后得到以下结果:
error: Unable to find vcvarsall.bat
Cannot open include file: 'config-win.h'
这意味着我需要一些必要的标题,从这里开始:(再次,32位,只是为了安全起见)。然后我得到了一堆未解决的外部符号错误,意识到我有多讨厌Windows,于是安装了预编译版本。创造了奇迹
哦,在有人建议使用不同的模块或方法进行连接之前,比如mysql connector
,除了不能解决问题之外,通常还有一个约束条件,即相同的代码(因此,相同的导入模块)应能在Windows和UNIX机器上工作。再加上:
抱歉发了这么长的邮件。我需要发泄!祝你好运 你能直接使用mysql-u my_user-p my_db
登录吗?@Ixer,是的,这很好。那么wiht-h localhost
呢?@JonStirling也可以。在这种情况下,你需要反复检查你刚才尝试的凭据是否确实是连接中使用的凭据。谢谢你的详细回答!我稍后会尝试你的步骤,然后再回复你。工作得很有魅力,接受了你的回答。再次感谢!谢谢我在这个问题上浪费了很多时间。你的解决方案成功了。