올바른 자격 증명을 가진 MySQL 연결에서 Python 3.5가 충돌하는 이유는 무엇입니까?
Windows 10(64비트)에서는 Python 3.5.1, mysqlclient 1.3.9(Python 3을 지원하는 MySQLDB의 fork), MariaDB 10.1을 사용하고 있습니다.
내가 달릴 때
import MySQLdb
con = MySQLdb.connect(user=my_user, passwd=my_pass, db=my_db)
Python이 크래쉬 합니다.
파이참에서, 나는 또한 메시지를 받는다.
Process finished with exit code -1073741819 (0xC0000005)
다른 오류는 발생하지 않습니다.이는 잘못된 credential로 동일한 스테이트먼트를 실행했을 때의 동작과는 다릅니다.
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)")
이 오류는 내 Cent에서 발생하지 않습니다.Python 3.4, mysqlclient 1.3.9 및 MariaDB 10.1을 실행하는 OS 서버.
이 질문에서 제시한 것처럼 이전 버전의 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
인스톨 합니다.Python 3.5와 비슷한 악몽을 겪었기 때문에 도움이 되었으면 합니다.제안사항은 다음과 같습니다.
- 아직 인스톨 하지 않은 경우는, 인스톨 해 주세요.
pip
- https://www.visualstudio.com/downloads에서 Visual Studio Community 2015를 설치합니다(Python 컴파일 도구만 필요).
- 휠 설치:
pip install wheel
- MySQLdb Windows 바이너리를 http://www.lfd.uci.edu/에서 다운로드하십시오.
mysqlclient-1.3.8-cp35-cp35m-win32.whl
(나도 64비트인데 조심스러웠어) - MySQLdb 폴더가 있는 경우 사이트 패키지에서 삭제합니다.
- 바이너리 다운로드와 같은 폴더에 있는 경우
pip install mysqlclient-1.3.8-cp35-cp35m-win32.whl
조금만 운이 좋다면, 당신은 연결될 수 있을 거예요.
메모들
기계에서 연결이 즉시 중단되었습니다(Got an error reading communication packets
내 안에서error.log
자격 증명이 100% 맞았는데도 말이죠.OP와 마찬가지로 윈도 쪽에서도 Python은 그냥 "crashed" (파손)으로, 셸을 재시작하고, 그 이후로는 절대 도달하지 않습니다.MySQLdb.connect
선. 심지어 a.a.try
블록은 더 이상의 실행을 허용하지 않았습니다(따라서 예외나 오류가 아닌 실제 크래시).호환성 문제(UNIX는 완전히 정상적으로 동작한다)라고 생각하고,MySQLdb
Windows 에서는, 에 이르기까지import _mysql
C(컴파일)의 문제임을 깨달았습니다.
모든 것이 잘 설치되었다고 생각하여 실행하였습니다.pip install MySQLdb-python
과 같은 을 받았습니다 , 을 .
error: Unable to find vcvarsall.bat
즉, VSC2015 설치에 포함된 Python(3.5) 버전용 컴파일 툴을 설치해야 했습니다.다시 실행해 보니 다음과 같은 결과가 나왔습니다.
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 머신 모두에서 동일한 코드(따라서 Import된 동일한 모듈)가 동작해야 한다는 제약이 있습니다.기타 정보: http://charlesnagy.info/it/python/python-mysqldb-vs-mysql-connector-query-performance
투고가 길어서 죄송합니다.환기가 필요했어요!행운을 빕니다.
언급URL : https://stackoverflow.com/questions/40064012/why-is-python-3-5-crashing-on-a-mysql-connection-with-correct-credentials
'source' 카테고리의 다른 글
JavaScript DOM 제거 요소 (0) | 2022.12.05 |
---|---|
PHP의 참조 할당 연산자 =& (0) | 2022.12.05 |
PHP용 Netbeans 7.4에서 "Do not Access Superglobal $_POST Array Direct" 경고 (0) | 2022.12.05 |
vuex에서 편집 가능한 복잡한 개체(네스트됨)를 적절하게 처리하는 방법 (0) | 2022.12.05 |
MYSQL 파티셔닝이란 (0) | 2022.12.05 |