升级 OpenSSL 后 ODBC 找不到正确的 OpenSSL 版本
更新:如果您遇到同样的问题,正在讨论问题的根源
我该如何解决这个问题?对这个不是很熟悉.所以ODBC需要找到正确的OpenSSL版本,即1.1.
我试过了:
ln -s/usr/local/Cellar/openssl@1.1/1.1.1g/usr/local/opt/openssl
此外,当我运行 openssl
命令时,它会找到正确的版本:
➜ ~ opensslOpenSSL>版本OpenSSL 1.1.1l 2021 年 8 月 24 日OpenSSL>
输出 brew list openssl@1.1
/usr/local/Cellar/openssl@1.1/1.1.1l_1/.bottle/etc/(7 个文件)/usr/local/Cellar/openssl@1.1/1.1.1l_1/bin/c_rehash/usr/local/Cellar/openssl@1.1/1.1.1l_1/bin/openssl/usr/local/Cellar/openssl@1.1/1.1.1l_1/include/openssl/(104 个文件)/usr/local/Cellar/openssl@1.1/1.1.1l_1/lib/libcrypto.1.1.dylib/usr/local/Cellar/openssl@1.1/1.1.1l_1/lib/libssl.1.1.dylib/usr/local/Cellar/openssl@1.1/1.1.1l_1/lib/engines-1.1/(2个文件)/usr/local/Cellar/openssl@1.1/1.1.1l_1/lib/pkgconfig/(3 个文件)/usr/local/Cellar/openssl@1.1/1.1.1l_1/lib/(4 个其他文件)/usr/local/Cellar/openssl@1.1/1.1.1l_1/share/doc/(3971 个文件)/usr/local/Cellar/openssl@1.1/1.1.1l_1/share/man/(3971 个文件)➜ ~
ls -l/usr/local/opt/openssl/lib/libssl.dylib 的输出
lrwxr-xr-x 1 用户名 admin 14 Sep 7 13:46/usr/local/opt/openssl/lib/libssl.dylib ->libssl.3.dylib
同时运行 DYLD_PRINT_LIBRARIES=1 isql -v -k "<connection string"
给我以下内容.似乎它仍然链接到 openssl@3
dyld:加载:/usr/local/opt/openssl/lib/libssl.dylibdyld:加载:/usr/local/Cellar/openssl@3/3.0.0/lib/libcrypto.3.dylib[08001][Microsoft][ODBC Driver 17 for SQL Server]SSL 提供程序:[无法加载 OpenSSL 库,请确保已安装 OpenSSL 1.0 或 1.1][08001][Microsoft][ODBC Driver 17 for SQL Server]客户端无法建立连接[ISQL]错误:无法 SQLDriverConnect
解决方案在尝试了很多事情之后,我找到了一个(hacky)解决方案:
- 我删除了
/usr/local/opt/
中的链接:
rm openssl
- 创建了一个指向 openssl@1.1 的新链接
ln -s/usr/local/Cellar/openssl@1.1/1.1.1l_1/usr/local/opt/openssl
Update: if you have this same issue, the source of the problem is being discussed here
After upgrading to Python3.10 with homebrew, my OpenSSL was upgraded to version 3 as well.
Now I can't connect to my SQL Server anymore, since ODBC requires OpenSSL 1.1 or 1.0. So when I run:
isql -v -k "<connection string"
I get the following error:
[08001][Microsoft][ODBC Driver 17 for SQL Server]SSL Provider: [OpenSSL library could not be loaded, make sure OpenSSL 1.0 or 1.1 is installed]
[08001][Microsoft][ODBC Driver 17 for SQL Server]Client unable to establish connection
But when I look in /usr/local/etc/
I see that openssl@1.1
is installed:
How can I solve this problem? Not really familiar with this. So ODBC needs to find the correct OpenSSL version, which is 1.1.
I tried:
ln -s /usr/local/Cellar/openssl@1.1/1.1.1g /usr/local/opt/openssl
Also when I run openssl
command, it finds the correct version:
➜ ~ openssl
OpenSSL> version
OpenSSL 1.1.1l 24 Aug 2021
OpenSSL>
Output brew list openssl@1.1
/usr/local/Cellar/openssl@1.1/1.1.1l_1/.bottle/etc/ (7 files)
/usr/local/Cellar/openssl@1.1/1.1.1l_1/bin/c_rehash
/usr/local/Cellar/openssl@1.1/1.1.1l_1/bin/openssl
/usr/local/Cellar/openssl@1.1/1.1.1l_1/include/openssl/ (104 files)
/usr/local/Cellar/openssl@1.1/1.1.1l_1/lib/libcrypto.1.1.dylib
/usr/local/Cellar/openssl@1.1/1.1.1l_1/lib/libssl.1.1.dylib
/usr/local/Cellar/openssl@1.1/1.1.1l_1/lib/engines-1.1/ (2 files)
/usr/local/Cellar/openssl@1.1/1.1.1l_1/lib/pkgconfig/ (3 files)
/usr/local/Cellar/openssl@1.1/1.1.1l_1/lib/ (4 other files)
/usr/local/Cellar/openssl@1.1/1.1.1l_1/share/doc/ (3971 files)
/usr/local/Cellar/openssl@1.1/1.1.1l_1/share/man/ (3971 files)
➜ ~
Output of ls -l /usr/local/opt/openssl/lib/libssl.dylib
lrwxr-xr-x 1 username admin 14 Sep 7 13:46 /usr/local/opt/openssl/lib/libssl.dylib -> libssl.3.dylib
Also running DYLD_PRINT_LIBRARIES=1 isql -v -k "<connection string"
gives me the following. Seems like it is still linked to openssl@3
dyld: loaded: /usr/local/opt/openssl/lib/libssl.dylib
dyld: loaded: /usr/local/Cellar/openssl@3/3.0.0/lib/libcrypto.3.dylib
[08001][Microsoft][ODBC Driver 17 for SQL Server]SSL Provider: [OpenSSL library could not be loaded, make sure OpenSSL 1.0 or 1.1 is installed]
[08001][Microsoft][ODBC Driver 17 for SQL Server]Client unable to establish connection
[ISQL]ERROR: Could not SQLDriverConnect
解决方案
After trying many things, I found a (hacky) solution:
- I removed the link in
/usr/local/opt/
:
rm openssl
- Created a new link to openssl@1.1
ln -s /usr/local/Cellar/openssl@1.1/1.1.1l_1 /usr/local/opt/openssl
相关文章