![](/img/trans.png)
[英]pyodbc connection to MS SQL Server running on a docker container
[英]Segfault on 2nd connection with pyodbc to mirrored MS SQL Server
我遇到了與鏡像MS SQL Server DB連接的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)。 使用非鏡像數據庫或禁用該數據庫的鏡像會使它消失。
我們已經嘗試升級幾個庫,但是並沒有解決問題。 版本:
要在此處添加,執行相同步驟的Java代碼可以正常工作。
有任何想法嗎?
MSODBC驅動程序有很多已知問題,尤其是在多線程方面。 聽起來您好像遇到了這種情況。 我在Django的runserver中遇到了這個問題; 只有使用Django的runserver的--nothreading
選項,它才能正常工作(並且仍然存在SQLRowCount中的錯誤)。
幸運的是,Microsoft現在正在組建一個團隊,以提供性能更好,更可靠的驅動程序(謝謝您,MS!)。 同時,我使用的是FreeTDS 0.95(它支持TDS 7.3版,即SQL Server 2008),這對我來說非常好。 試試看嗎? 祝好運。
在某些版本的MS ODBC + unixODBC中,這是一個已知問題。 通過升級到unixODBC-2.3.2和最新的MS ODBC驅動程序,解決了某些Linux發行版上的問題,例如ubuntu和debian。 您可以在此處按照升級步驟進行操作: https : //blog.afoolishmanifesto.com/posts/install-and-configure-the-ms-odbc-driver-on-debian/它解決了雙重連接問題-可以打開多個連接沒有segfaulting。
盡管在RedHat 7.1上,相同的升級步驟對我不起作用-在同一會話中兩次打開連接仍會遇到段錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.