source

올바른 자격 증명을 가진 MySQL 연결에서 Python 3.5가 충돌하는 이유는 무엇입니까?

factcode 2022. 12. 5. 21:14
반응형

올바른 자격 증명을 가진 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는 완전히 정상적으로 동작한다)라고 생각하고,MySQLdbWindows 에서는, 에 이르기까지import _mysqlC(컴파일)의 문제임을 깨달았습니다.

모든 것이 잘 설치되었다고 생각하여 실행하였습니다.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

반응형