Max*_*ski 6 python sql-server pyodbc segmentation-fault database-mirroring
我正面临着连接到镜像MS SQL服务器数据库的Python脚本的问题.当我第二次尝试连接数据库时,它会抛出一个分段错误.应用服务器和数据库实例都在Google Compute Engine上运行.
这里有一些代码复制了这个问题:
import pyodbc
params = {
'autocommit': True,
'uid': 'myuser',
'tds_version': '8.0',
'DRIVER': '{mssql}',
'pwd': 'mypassword',
'server': 'sql-server-01',
'database': 'mydb',
'port': 1433,
}
c1 = pyodbc.connect(**params)
c2 = pyodbc.connect(**params)
Run Code Online (Sandbox Code Playgroud)
第一个连接(c1)成功,但第二个连接(c2)立即失败并出现segfault."mydb"镜像到第二个服务器(sql-server-02).使用非镜像数据库或禁用此数据库的镜像会使其消失.
我们已经尝试升级几个库,但这并没有解决问题.版本:
要在此添加,执行相同步骤的Java代码可以正常工作.
有任何想法吗?
MSODBC 驱动程序有许多已知问题,尤其是多线程方面。听起来你正遇到这个问题。我在 Django 的 runserver 中遇到了这个问题;它只能与--nothreadingDjango 的 runserver 选项一起工作(并且仍然存在 SQLRowCount 中的错误)。
幸运的是,微软现在正在组建一个团队来开发性能更好、更可靠的驱动程序(谢谢你,微软!)。与此同时,我使用 FreeTDS 0.95(它支持最高 TDS 版本 7.3,类似于 SQL Server 2008),它对我来说非常好。尝试一下吗?祝你好运。