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

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 版本是不一样的。其次连接的时候,要注意端口和实例名的字符串写法。

http://www.xdnf.cn/news/8229.html

相关文章:

  • Oracle查看SQL执行计划的方法
  • .NET外挂系列:7. harmony在高级调试中的一些实战案例
  • docker环境安装wlcn
  • upload-labs通关笔记-第20关 文件上传之杠点绕过
  • DeltaV SIS逻辑解算器艾默生SLS 1508
  • Linux 之 MTD 子系统框架
  • recurrent neural network(rnn)
  • C++(29):结构体
  • 并发编程之线程安全lock
  • 看八股有感
  • 进销存管理系统:Java+Vue,含源码及文档,集成采购、销售、库存管理,实现数据互通,提升运营效率
  • 常见排序算法详解及其复杂度分析
  • 【沉浸式解决问题】System.getProperty(“user.dir“)获取不到项目根目录
  • 多线程编程的典型使用场景
  • 【RocketMQ 生产者和消费者】- 生产者启动源码-启动流程(1)
  • 查看使用宿主机模式的Docker容器端口
  • 九、日志分析和系统故障排查
  • 【知识图谱】数据处理与数据存储
  • VTK—三维图像重建和剖切
  • 【博通芯片方案】调试指令详解版二(无线)
  • 高等数学-连续
  • 【RocketMQ 生产者和消费者】- 生产者启动源码-创建 MQClientInstance(2)
  • yarn 命令运行问题 bug
  • 催化燃烧型氢气传感器的响应速度和恢复速度如何?
  • os:进程与线程上
  • OS虚拟内存管理
  • 武汉火影数字|数字企业馆制作 多媒体数字化展厅
  • 4 SLAM(同步定位与建图)学习指南
  • 【北邮通信系统建模与仿真simulink笔记】(2)2.3搭建仿真模型模块操作运行仿真
  • F5《2025年应用战略现状》报告:AI 落地加速,企业战略从讨论迈向行动