DB-Lib error message 20002, severity 9


完整報錯內容:20002, b'DB-Lib error message 20002, severity 9:\nAdaptive Server connection failed (I0.185.43.12:1433)\n'

 

問題描述 :在python中,使用 psmssql 連接遠程數據庫,報上面的錯。通過別的機器連接遠端機沒問題,自己機器用別的工具(sqlcmd,naticat等)連接遠端機也沒問題,定位到問題出在本機使用pymssql 庫

 

環境:win7sp1x64 + python3.5+pymssql2.1.3

 

解決方案:

  官方鏈接:http://www.pymssql.org/en/stable/freetds.html 

  它推薦使用tsql命令先測試一下freetds的好壞,反正pymssql也是通過freetds來連接數據庫的,先排查freetds的問題。

  

  1.下載windows系統下的tsql環境

  

 

  2.我解壓到了桌面,然后cd進了bin目錄

  

  

 

  3.測試鏈接

  

 

   按照命令去連接數據庫,注意 -p 1433,-D 數據路名稱 -U 用戶名 -P 密碼

  sql默認端口都是1433,除非你特意改過,pymssql的默認端口也是這個,除非你明確的知道端口改了,否則不要動這個參數。

  回車之后要是能連上就直接連上了,證明freetds在本機是可以用的。我的機器在這里提示了一下,編碼是默認的"CP936",而pymssql的默認編碼是 UTF-8

  

  4 萬惡的編碼轉換

  知道是什么問題,就可以改了,在每個pymssql.connect 時候指定charset="CP936"就行了

  

 

 

  搞定,不用pyodbc重寫,不用重裝純凈系統,不用使用pymssql的老版本然后自己編譯freetds,完美

 


  這個問題困擾了很久,StackOverflow和其他論壇都沒能給出滿意的解決方案,可能我翻的不夠細致,還是官網靠譜,沒事多翻翻

 

   原創不易,如有幫助,感謝點贊。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM