thinkphp或laravel连接sql server 2014数据库
问题描述:平时使用最多为mysql数据库,目前有项目数据库为sql server 2014,列出连接全过程
首先下载安装SQLserver的odbc开放数据库链连接,下载地址:https://learn.microsoft.com/zh-cn/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-ver16&eqid=8863a48f000655880000000564d471c1
(注:新环境:Microsoft ODBC 18,旧环境:Microsoft ODBC 17,也就是这两个版本的区别。区别就是,18的encrypt默认配置改为1了,而17默认配置为0,推荐下载17版本,否则会报错PDOException: SQLSTATE[08001]: [Microsoft][ODBC Driver 18 for SQL Server]SSL 提供程序: 证书链是由不受信任的颁发机构颁发的。)
1.配置thinkphp或laravel 的config/database.php文件后,配置sql对应的配置如下:
'sqlsrv' => [ 'driver' => 'sqlsrv', 'host' => 'localhost', 'port' => 1433, 'database' => 'webman', 'username' => 'webman', 'password' => '', 'charset' => 'utf8', 'prefix' => '', ],
2.构建数据库查询方法运行后报如下错误:
PDOException: could not find driver in E:\WWW\project\vendor\illuminate\database\Connectors\Connector.php:70
该错误为php版本未安装对应的sql扩展导致。
2.1.下载对应版本的php扩展
登录官网(https://learn.microsoft.com/en-us/sql/connect/php/release-notes-php-sql-driver?view=sql-server-ver16#510)下载 和自己php版本对应的扩展,我的php为7.4,下载5.10压缩包(php8.0版本下载5.12压缩包)如下图
2.2、我的电脑是64位,选取如下图所示两个扩展,复制到php7.4的ext文件夹下:
2.3、在php.ini文件中加入对应的扩展配置
extension=sqlsrv_74_nts_x64
extension=pdo_sqlsrv_74_nts_x64.dll
(是sqlsrv_74_nts_x64还是sqlsrv_74_ts_x64,需要根据php实际版本决定,如上图放置ts版本错误后,换nts版本正常)
2.4、重启Nginx或apache让配置生效
3.重新访问数据库查询方法,正确返回数据,配置完成