Laravel 连接 SQL Server 之 Linux 系统安装 unixODBC 和 Microsoft ODBC 驱动

Laravel 连接 SQL Server 数据库需要进行以下配置:

1. 安装必要的扩展

  1. 对于 Linux 系统,需要安装 unixODBC 和 Microsoft ODBC 驱动

  2. 对于 Windows 系统,确保安装了 SQL Server Native Client 或 ODBC Driver for SQL Server

  3. PHP 需要安装 pdo_sqlsrv 和 sqlsrv 扩展

2. Linux 安装 SQL Server 驱动

laravel 报错

previous exception\] \[object\] (PDOException(code: IMSSP): SQLSTATE\[IMSSP\]: This extension requires the Microsoft ODBC Driver for SQL Server to communicate with SQL Server. Access the following URL to download the ODBC Driver for SQL Server for x64: https://go.microsoft.com/fwlink/?LinkId=163712

这个错误表明你的 PHP 环境缺少 Microsoft ODBC Driver for SQL Server

CentOS/RHEL 系统安装配置:

bash 复制代码
# 安装 unixODBC
sudo yum install -y unixODBC unixODBC-devel

此处注意下,安装的是 msodbcsql18

bash 复制代码
# 添加 Microsoft 仓库并安装 ODBC 驱动
sudo curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/$(rpm -E %rhel)/prod.repo
sudo yum remove -y unixODBC-utf16 unixODBC-utf16-devel
sudo ACCEPT_EULA=Y yum install -y msodbcsql18 mssql-tools18

验证 ODBC 驱动安装

bash 复制代码
odbcinst -q -d 

3. 常见问题

msodbcsql18 装上后,laravel 运行报错:

previous exception\] \[object\] (PDOException(code: 08001): SQLSTATE\[08001\]: \[unixODBC\]\[Microsoft\]\[ODBC Driver 18 for SQL Server\]SSL Provider: \[error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed:self signed certificate

官方解释是 应用程序无法验证 SQL Server 的 SSL 证书,通常是因为 SQL Server 使用了自签名证书

找了好久没解决这个问题,而且以前也没遇见过。想别的办法

考虑下是否是版本问题

bash 复制代码
sudo yum list available | grep msodbcsql

前面安装的是msodbcsql18 ,卸载,重新安装13

bash 复制代码
#卸载18
yum remove msodbcsql18
# 安装 msodbcsql 13,注意文件名
ACCEPT_EULA=Y yum install -y msodbcsql

测试

php 复制代码
 //数据库服务器地址,注意实例和端口的写法
$serverName = '192.168.116.180\testsyna,11552';
$uid = 'mssa';     //数据库用户名
$pwd = '123456'; //数据库密码
$connectionInfo = array("UID" => $uid, "PWD" => $pwd, "Database" => 'test001');
$conn = sqlsrv_connect($serverName, $connectionInfo);
if($conn == FALSE){
    echo "连接失败!";
    var_dump(sqlsrv_errors());
    exit;
}else{
    echo "链接成功";
}

echo "连接成功!";exit;

测试通过,运行正常'

总结下:不同版本的sqlserver对应的 msodbcsql 版本是不一样的。其次连接的时候,要注意端口和实例名的字符串写法。

相关推荐
BingoGo5 天前
告别 Laravel 缓慢的 Blade!Livewire Blaze 来了,为你的 Laravel 性能提速
后端·laravel
JaguarJack5 天前
告别 Laravel 缓慢的 Blade!Livewire Blaze 来了,为你的 Laravel 性能提速
后端·php·laravel
troublea5 天前
ThinkPHP vs Laravel:PHP框架终极对决
开发语言·php·laravel
troublea6 天前
Laravel 10.X重磅升级:8大核心特性解析
php·laravel
bepeater12346 天前
Laravel 10.x重磅升级:六大核心特性解析
jvm·php·laravel
云司科技codebuddy6 天前
资质齐全Trae核心代理
laravel
lucky67077 天前
Laravel 9.x LTS重磅升级:六大核心改进
java·php·laravel
lucky67077 天前
Laravel5.x核心特性全解析
mysql·php·laravel
lucky67077 天前
Laravel 10.X 新特性全解析
php·laravel
GIS追梦人19 天前
笔记-Laravel12 开发API前置准备
php·laravel