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.测试链接
1a34
按照命令去连接数据库,注意 -p 1433,-D 数据路名称 -U 用户名 -P 密码
sql默认端口都是1433,除非你特意改过,pymssql的默认端口也是这个,除非你明确的知道端口改了,否则不要动这个参数。
回车之后要是能连上就直接连上了,证明freetds在本机是可以用的。我的机器在这里提示了一下,编码是默认的"CP936",而pymssql的默认编码是 UTF-8
4 万恶的编码转换
知道是什么问题,就可以改了,在每个pymssql.connect 时候指定charset="CP936"就行了
搞定,不用pyodbc重写,不用重装纯净系统,不用使用pymssql的老版本然后自己编译freetds,完美
这个问题困扰了很久,StackOverflow和其他论坛都没能给出满意的解决方案,可能我翻的不够细致,还是官网靠谱,没事多翻翻
原创不易,如有帮助,感谢点赞。
- SQLServer学习笔记 --- (20008, 'DB-Lib error message 20008, severity 9:\nUnable to open socket\nNet-Li
- (102, "Incorrect syntax near '-'.DB-Lib error message 102, severity 15:\nGen
- 'Conversion failed when converting date and/or time from character string.DB-Lib error message 241,
- Error 20002 (severity 9):Adaptive Server connection failed
- sqlplus: error while loading shared libraries: /var/oracle/product/11.2.0/db_1/lib/libclntsh.so.11.1
- Replication error Agent message code 20002 due to OS error 2.
- lsnrctl: error while loading shared libraries: /opt/app/oracle/product/11.2/db_1/lib/libclntsh.so.11
- Getting this error message: dbModel read resource does not implement Zend_Db_Adapter_Abstract
- lsnrctl: error while loading shared libraries: /opt/app/oracle/product/11.2/db_1/lib/libclntsh.so.11
- Sql Server Error: No error message available, result code: DB_E_ERRORSOCCURRED(0x80040E21).
- lsnrctl: error while loading shared libraries: /opt/app/oracle/product/11.2/db_1/lib/libclntsh.so.11
- Error in invoking target 'client_sharedlib' of makefile '/u01/app/oracle/product/10.2.0/db_1/network
- db mysql error_list
- libprotobuf ERROR google/protobuf/wire_format.cc:1059
- 解决/var/lib/mlocate/mlocate.db 文件过大
- could not connect to session bus://bin/dbus-lauch terminated abnormally without any error message
- libssh2编译错误(configure error: cannot find OpenSSL or Libgcrypt)解决方法
- OpenSIPS启动时报ERROR:db_mysql:db_mysql_connect: driver error(1045)的解决方法
- no openvas scap database found. (tried /var/lib/openvas/scap-data/scap.db)错误
- /usr/lib/x86_64-linux-gnu/libboost_system.so.1.54.0:-1: error: error adding symbols: DSO missing fro