freedts连接ms 08 r2
有知有觉地,过了求职年龄上限,而所在屋檐也是下雨天不留草了,不管怎样,有几天稍悠闲的天数可以折腾点别的什么。就想着怎么把原来windows上码挪到linux上,想来不会有啥大障碍,毕竟是普及的库。原码用的ODBC,图省力转换过去也沿用ODBC,微软提供了18,17版本,还有找不到13.1及13版本。按说明顺着绺过去,安装顺利,就是报错,试了php,python,sqlcmd都这样
SQL error: [Microsoft][ODBC Driver 17 for SQL Server]SSL Provider: [error:0A00014D:SSL routines::legacy sigalg disallowed or unsupported]
gpt和网页上查找一番,说是新版本的openssl,应用了高版本的TSL安全,需在配置文件里作修改云云,如下,可没效
修改文件:/etc/ssl/openssl.cnf ,添加如下
[default_conf]
ssl_conf = ssl_sect
[ssl_sect]
system_default = system_default_sect
[system_default_sect]
MinProtocol = TLSv1
CipherString = DEFAULT@SECLEVEL=1
还特意留意了原文件是指向是
openssl_conf = openssl_init
并更新为
openssl_conf = default_conf
报错的提示还是稳稳地犟在那里
只得另寻蹊径,gpt上提供了可选的freetds,一试有效
只需要把连接字符串DSN的
DRIVER={ODBC Driver 17 for SQL Server}
修改为
DRIVER=FreeTDS
即可
但问题还是没完全解决啊,怎么微软自己家的崽这么不在谱,按网上所能找到都试试了,包括sqlcmd,isql,换ODBC Driver 18 for SQL Server,还是铁板一块,而13的链接是失效的,只能在openssl上再碰撞一下,无奈找不到合适的版本,只得作罢。
罢则罢已,freetds这条线还是得拉一拉,还行,在php上的转换很顺利,不是问题的意外来了,使用freetds的php网页在uft-8字符集使用中文居然不用iconv函数来转换,直接就可以用,像原生GB2312一般,算是这番尝试的彩蛋。啥原因呢,哪旮旯角转错了或碰哪个隐匿按键了,目前的蚍蜉只能打住在此。