pyodbc上的pyodbc段错误

时间:2017-03-01 10:06:54

标签: python mysql odbc pyodbc freetds

这里有一个菜鸟。我试图创建一个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

1 个答案:

答案 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)。

虽然可以认为分段错误错误应该永远不会发生"但是尝试升级此问题可能没有意义。

是一个经典案例

病人:我这样做会很疼。
医生:然后停止这样做。