调试Archery连接SQL Server提示驱动错误


当我们在调试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.寻找技术文档

step 1 点击 【快速开始】

调试Archery连接SQL Server提示驱动错误

step 2 找到部署相关的文档

调试Archery连接SQL Server提示驱动错误

 step 3 选择 手动部署 部分

调试Archery连接SQL Server提示驱动错误

 Step 4  选择其中的SQL Server 部分 【安装 MS SQL Server 驱动(需要使用MsSQL的按需安装)】

调试Archery连接SQL Server提示驱动错误

 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 的电脑上运行

本站声明:
1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;

2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;

3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;

4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;

5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/293336.html

(0)
上一篇 2022年11月20日
下一篇 2022年11月20日

相关推荐

发表回复

登录后才能评论