我遇到了连接到镜像 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)
第一个连接 (c1) 成功,但第二个连接 (c2) 立即失败并出现段错误。 “mydb”被镜像到第二台服务器(sql-server-02)。 使用非镜像数据库,或禁用此数据库的镜像,使其消失。
我们已尝试升级多个库,但未能解决问题。 版本:
- Microsoft SQL Server:12.00.2000(最新)
- python :2.7.6
- pyodbc:3.0.10(最新)
- unixODBC:2.2.14p2-5ubuntu5、2.3.0、2.3.4(最新)
- RedHat 的 MS ODBC 驱动程序:11.0.1790.0、11.0.2270.0(最新)
要在此处添加,执行相同步骤的 Java 代码工作正常。
有什么想法吗?
最佳答案
MSODBC 驱动程序有很多已知问题,尤其是在多线程方面。听起来你遇到了这个。我用 Django 的运行服务器遇到了它;它只适用于 Django 的运行服务器的 --nothreading
选项(并且仍然存在 SQLRowCount 中的错误)。
幸运的是,Microsoft 现在正在组建一个团队来开发性能更好、更可靠的驱动程序(谢谢 MS!)。同时,我使用 FreeTDS 0.95(最高支持 TDS 7.3 版,一个 la SQL Server 2008),它对我很好。试试看?祝你好运。
关于python - 与 pyodbc 到镜像 MS SQL Server 的第二次连接出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33047612/