2017-03-01 11 views
1

여기 멍청한 놈. 내가 테스트 SQL 기반 데이터베이스를 스트레스를 비단뱀 스크립트를 만들려고 메신저.pyodbc.goto에 pyodbc segfault

;DRIVER={FreeTDS};SERVER=127.0.0.1;PORT=3306;UID=root;PWD=********;Encrypt=yes;Connection Timeout=30;Database=test 

Segmentation fault 

메신저 단지이를 반환

가 데이터베이스에 연결 그러나 내가 pyodbc.connect시 분할 오류 오류로 실행 pyodbc를 사용하려고 시도하고 필자 (ConnectionString을)

#connects to the database 
def connectToDb(): 
print(labels.OKBLUE + "Connecting to: " + args.ip + " at port: " + args.port) 

connString = "" 
connString = connString + ';DRIVER=' + args.driver 
connString = connString +';SERVER=' + args.ip 
if not args.port == "": 
    connString = connString + ';PORT=' + args.port 
connString = connString + ';UID=' + args.user 
connString = connString + ';PWD=' + args.password 
connString = connString + ';Encrypt=yes;Connection Timeout=30' 
if not args.database == None or not args.database == "": 
    connString = connString + ";Database=" + args.database 
try: 
    print(connString) #for debugging 
    conn = pyodbc.connect(connString) 
except pyodbc.Error as ex: 
    for arg in ex.args: 
     print(labels.FAIL + arg) 
    sys.exit() 

로컬 mysql 서버에 연결을 시도하고 무엇이 원인을 알지, 어떤 도움과 조언을 크게 환영합니다

편집 :

0 운영 체제로

데비안 제시

파이썬 3 최신

ODBC를 최신

FreeTDS를의 v0.91

TDS 버전 4.2

- Jort

+0

분할의 오류는 한 두 가지의 이유 일 : 1) 당신은 C 모듈 – Fuzzybear

+0

메모리 2) 버그에서 실행하십시오 [편집] 등의 자세한 내용은 포함하는 질문 : 운영 체제를. 파이썬 버전. pyodbc 버전. MySQL Connector/ODBC 용 ODBC 드라이버 버전. FreeTDS는 MySQL에 연결할 수 없으며, SQL Server 및 Sybase에만 해당됩니다. –

+0

@GordThompson> FreeTDS는 MySQL에 연결할 수 없습니다. 나는 그 드라이버를 mysql 데이터베이스에 연결해야하는지 모른다. 나는이 문제를 해결하는 데 충분한 어려움을 겪고 있었고, 대답을 검색 할 때 가장 많이 보았던 것은 그것이 작동 할 것이라고 가정 한 것입니다. – ghostwolf

답변

3

근본 원인 귀하의 문제 중 하나는 FreeTDS ODBC d 강에서 MySQL 데이터베이스에 액세스 할 수 있습니다. FreeTDS ODBC는 Microsoft SQL Server 및 Sybase 데이터베이스에 연결하기위한 것입니다. MySQL 데이터베이스에 연결하기위한 ODBC 드라이버는 MySQL Connector/ODBC입니다.

그게 무슨 가치가 있는지, 우분투 저장소에서 사용할 수있는 FreeTDS ODBC 드라이버를 사용하여 우분투 16.04에서 문제를 재현 할 수있었습니다. "Segmentation fault (core dumped)"오류 후 Stack 추적은 실제로 FreeTDS ODBC 드라이버 자체 (libtdsodbc.so)에서 오류가 발생했음을 나타냅니다.

Segmentation Fault 오류가 "절대로 발생하지 않아야 함"이라고 주장 할 수 있지만이 문제를 이관하려고 할 때는 아무런 의미가 없습니다.

의 대표적인 사례입니다.

환자 :이 작업을 수행하면 아파요.
의사 : 그 다음에는 그만하십시오. 파이썬에서

+1

덕분에 많은 사람들이 시스템의 작동 방식을 정확히 알지 못해서 신참 한 실수를 저지른 것처럼 보였습니다. 정확한 드라이버를 알려 주셔서 감사합니다. – ghostwolf