这里有一个菜鸟。我试图创建一个python脚本来强调测试基于SQL的数据库。
我一直在尝试使用pyodbc连接到数据库但是我在pyodbc.connect(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()
返回:
;DRIVER={FreeTDS};SERVER=127.0.0.1;PORT=3306;UID=root;PWD=********;Encrypt=yes;Connection Timeout=30;Database=test
Segmentation fault
我只是想连接到本地的mysql服务器,我不知道是什么导致了这一点,非常感谢任何帮助和建议
编辑:
debian jessie作为操作系统
python 3最新
odbc最新
freetds v0.91
TDS版本4.2
- Jort
答案 0 :(得分:3)
问题的根本原因是您尝试使用FreeTDS ODBC驱动程序访问MySQL数据库。 FreeTDS ODBC仅用于连接Microsoft SQL Server和Sybase数据库。用于连接MySQL数据库的ODBC驱动程序是MySQL Connector/ODBC。
为了它的价值,我能够使用Ubuntu存储库提供的FreeTDS ODBC驱动程序在Ubuntu 16.04下重现您的问题。 "分段故障(核心转储)"错误,堆栈跟踪表明故障实际发生在FreeTDS ODBC驱动程序本身(libtdsodbc.so)。
虽然可以认为分段错误错误应该永远不会发生"但是尝试升级此问题可能没有意义。
是一个经典案例病人:我这样做会很疼。
医生:然后停止这样做。