1. 背景介绍
PHP(开发语言)版本升级是追求技术创新和提升业务性能的必然选择。PHP7.1版本的升级对MSSQL数据库驱动有新的要求,新的驱动将MSSQL数据库的连接方式更改为ODBC连接,从而避免与其他扩展程序及其自身内置的数据库驱动程序冲突。但是,这也带来了一些问题,比如在升级到PHP7.1后,MSSQL数据库服务器在连接时报错,无法完成连接。
2. 报错信息及原因分析
2.1 报错信息
在升级PHP版本后,连接MSSQL数据库时,出现以下错误提示:
Uncaught PDOException: SQLSTATE[IMSSP]: This extension requires the Microsoft ODBC Driver for SQL Server to communicate with SQL Server. Access to SQL Server from PHP can be achieved using the Microsoft Drivers for PHP for SQL Server. Download the PHP Drivers from the ODBC Driver for SQL Server download page.
这个错误提示主要是因为新的MSSQL数据库驱动调用的需要MSSQL操作的DLL函数已经发生了改变,此时PHP使用的原有DLL函数不再适用。
2.2 原因分析
在PHP7.1版本中,MSSQL扩展程序及其自身内置的数据库驱动程序已经被弃用,并被替换为PDO和SQLSRV扩展程序。PDO和SQLSRV扩展程序在连接MSSQL数据库时,使用ODBC连接方式,所以需要安装ODBC驱动程序。
3. 解决方案
3.1 安装ODBC驱动程序
在PHP7.1版本以上使用MSSQL数据库驱动时,需要安装对应的ODBC驱动程序。可以通过以下方式安装ODBC驱动程序:
在Windows操作系统中,可以直接从Microsoft官网下载ODBC驱动程序,并进行安装。
在Linux操作系统中,可以通过命令行执行以下命令安装:
sudo apt-get update
sudo apt-get install unixodbc-dev
安装ODBC驱动程序后,需要重新创建一个DSN。
3.2 重新创建DSN
重新创建DSN并使用ODBC连接方式连接MSSQL数据库。在创建DSN时,需要将ODBC驱动程序与MSSQL数据库进行关联,配置参数如下:
数据库驱动程序:SQL Server Native Client 11.0
服务器名称:数据库服务器名称或IP地址
使用Windows身份验证:否
用户名:数据库用户名
密码:数据库密码
在创建DSN时,需要注意以下几点:
服务器名称需要填写数据库服务器的名称或IP地址。如果数据库和应用程序在同一台服务器上,则填写localhost。
使用Windows身份验证选项默认为否。如果需要使用Windows身份验证,则需要选中此项,并在下一栏中填写用户名和密码。
如果数据库已经开启了加密(Encrypted Connections),则需要在下一栏中添加以下连接参数:
Encrypt=yes;
4. 总结
PHP7.1版本的升级对MSSQL数据库驱动有新的要求,需要使用ODBC连接方式连接MSSQL数据库。在升级后需要下载安装ODBC驱动程序,并重新创建DSN。
以上是php7.1升级遇到的mssql数据库问题的解决方法,希望对大家有所帮助。