當我們在除錯Archery的時候,連接SQL Server 會報錯,而MySQL部分沒有問題,報錯資訊如下:
Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'ODBC Driver 17 for SQL Server' : file not found (0) (SQLDriverConnect)")
記錄下 我們是怎么定位問題、尋找技術檔案幫助、和安裝相關組件的,
1.定位關鍵代碼
通過報錯路徑和設定斷點,很快定位的報錯代碼,
其路徑為
/sql/engines/mssql.py
報錯的方法是get_connection,具體代碼
def get_connection(self, db_name=None): connstr = """DRIVER=ODBC Driver 17 for SQL Server;SERVER={0},{1};UID={2};PWD={3}; client charset = UTF-8;connect timeout=10;CHARSET={4};""".format(self.host, self.port, self.user, self.password, self.instance.charset or 'UTF8') if self.conn: return self.conn self.conn = pyodbc.connect(connstr) return self.conn
相對比較簡單,沒啥邏輯,
2.尋找技術檔案
主要還是 https://archerydms.com/ 官方檔案
step 1 點擊 【快速開始】

step 2 找到部署相關的檔案

step 3 選擇 手動部署 部分

Step 4 選擇其中的SQL Server 部分 【安裝 MS SQL Server 驅動(需要使用MsSQL的按需安裝)】

3.安裝相關組件
上面的具體要求和步驟如下
# CentOS 6 curl https://packages.microsoft.com/config/rhel/6/prod.repo > /etc/yum.repos.d/mssql-release.repo # CentOS 7 curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo # 卸載沖突驅動 sudo yum remove unixODBC-utf16 unixODBC-utf16-devel # 安裝驅動 sudo ACCEPT_EULA=Y yum install msodbcsql17 sudo ACCEPT_EULA=Y yum install mssql-tools # 更新環境變數 echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc source ~/.bashrc # 安裝ODBC依賴 sudo yum install unixODBC-devel
如果yum源 或者 本地server 可以上外網,則安裝要求之間運行安裝即可,
下面我們看看,如果因為yum源和上網權限, server之間 yum不行怎么辦?
我們把上面的執行拆解掉
step 1 因為 Server是 CentOS 7 ,所以,我們在可上Intent 的電腦上運行
https://packages.microsoft.com/config/rhel/7/prod.repo
下載 prod.repo 檔案

step 2 用記事本方式 打開 prod.repo
里面的內容如下:
[packages-microsoft-com-prod] name=packages-microsoft-com-prod baseurl=https://packages.microsoft.com/rhel/7/prod/ enabled=1 gpgcheck=1 gpgkey=https://packages.microsoft.com/keys/microsoft.asc
step 3 打開訪問其中的 baseurl
網址 https://packages.microsoft.com/rhel/7/prod/
看到其中是 各個 組件大全,包含各種組件包

step 4 在界面上Ctrl + F ,查找 到【msodbcsql17】 【mssql-tools】,找到 合適版本分別進行下載,
查找msodbcsql17

查找mssql-tools

注意,因本地已安裝 unixODBC-devel,所以,無需安裝,只要安裝上面的兩個組件就可以了,其他任何操作都不需要了,即相當于 只執行建議中的
# 安裝驅動 sudo ACCEPT_EULA=Y yum install msodbcsql17 sudo ACCEPT_EULA=Y yum install mssql-tools
step 4 將下載的rpm 檔案 上傳的服務器上,通過 yum localinstall 插件名 命令分別安裝即可,
step 5 安裝需要的組件后,再次除錯,報錯消失了,
4.說明
梳理整理記錄于此,希望遇到類似情況,有所幫助,減少不必要的探索和掙扎,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/499175.html
標籤:SQL Server
