今天一个项目,需要用到连接SQLSERVER数据库,获取数据,按照以往的做法 ,安装了LNMP,装完之后在安装Freetds,然后在独立添加PHP的MSSQL的模块,./configure make &&make install 然后在PHP.ini 添加扩展MSSQL模块 一路安装顺利,安装好了以后,我在本地测试 tsql -H 192.168.1.33 -U sa -P 12345 可以登录Sqlserver ,还可以查询到数据
然后就很自然的,重启PHP NGINX 然后告诉开发,环境OK了 ,可以开始测试了,结果过了不到5分钟 开发告诉我获取不了数据,我让开发发给我了一条链接,我登录测试一看,果然是获取不到数据,并且还报错,登录系统查看了日志 ,提示waring mssql_driver line 113 不管怎样调试 通过PHP去获取数据就报错,通过MSSQL 驱动 本地连接就正常。折腾了一天半。后来问题终于找到了,原来是版本问题
我的环境 freetds版本是 0.95.0 PHP版本是 5.5.24 要连接的数据库是 SQL2005
在重新编译freeTDS 的时候 指定版本 ./configure --prefix=/usr/local/freetds/ --with-tdsver=7.1 --enable-msdblib
查了一些资料 说Freetds 编译安装的时候如果默认不指定版本 默认是5.0 这个是匹配SQSERVER 2000 数据库的 指定8.0版本的是 SQLSERVER 2008 的 其他的我没求证过,没那个版本的数据库,就为了这个小小的问题 坑了我一天半,特别记录一下,以后在踩类似的坑的时候 可以快速填坑
时间: 2024-10-09 21:09:40