当前位置: 首页 > news >正文

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 系统安装配置:

# 安装 unixODBC
sudo yum install -y unixODBC unixODBC-devel

此处注意下,安装的是 msodbcsql18

# 添加 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 驱动安装

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 使用了自签名证书

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

考虑下是否是版本问题

sudo yum list available | grep msodbcsql

在这里插入图片描述
前面安装的是msodbcsql18 ,卸载,重新安装13

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

测试

 //数据库服务器地址,注意实例和端口的写法
$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 版本是不一样的。其次连接的时候,要注意端口和实例名的字符串写法。

相关文章:

  • 【工具类】常用的工具类——CollectionUtil
  • 红帽企业 Linux 10:探索全新生成式 AI 助手!
  • JDK21全景图:关键特性与升级价值
  • Python爬虫(34)Python爬虫高阶:动态页面处理与Playwright增强控制深度解析
  • MCP如何助力智能交通系统?从数据融合到精准决策
  • 图纸加密软件的核心优势解析
  • C++11-(3)
  • 文章记单词 | 第104篇(六级)
  • PostgreSQL 用户权限与安全管理
  • 610Hz!无惧环境光新薄膜!ROG全新电竞显示器亮相2025台北电脑展
  • 阿里云服务器 篇十四:图片库网站
  • 应届本科生简历制作指南
  • 嵌入式学习笔记 - Void类型的指针
  • shell脚本总结5
  • QGIS DB Manager 导入 Shp 到 PostGIS 空间数据库
  • JDK7Hashmap的头插法造成的环问题
  • 【Java】CompletableFuture.orTimeout在JDK21以下版本有内存泄漏及解决方案
  • 2. PyQGIS Windows下开发环境搭建
  • 【JAVA基础】什么情况下可以直接使用类名.方法名调用方法?
  • 降低诊断消息转发延迟与缓冲区内存占用优化方案
  • 东山县城乡规划建设局网站/营销咨询公司排名
  • 酒店网站 asp.net/百度官方版
  • 求网站开发客户/google关键词推广
  • 互联网网站开发合同范本/深圳百度竞价托管公司
  • 微信网站 手机网站/白云百度seo公司
  • 做旅游网站需要的背景/推广赚钱