Laravel中sqlsrv驱动缺失报错求助,已尝试Schema设置仍未解决
Laravel sqlsrv驱动找不到问题解决
我正在学习Laravel框架,使用过程中碰到不少报错,其中一个问题一直解决不了,特此求助。我试过以下代码设置:
use Illuminate\Support\Facades\Schema; public function initialization() { Schema::defaultStringLength(191); }
但执行后仍然出现报错:
could not find driver (Connection: sqlsrv, SQL: select top 1 * from [sessions] where [id] = ZvOgLxmPXAuXGtL47cy0GBe2YsyYq9QVkm2pNeBD), Laravel
附上报错截图:
问题本质
你写的Schema::defaultStringLength(191)是用来解决MySQL字符串长度溢出的问题,和当前「找不到sqlsrv驱动」的报错完全不相关。这个错误的核心是你的PHP环境未安装或启用SQL Server的PDO驱动。
解决步骤
1. 安装PHP的sqlsrv扩展
根据你的PHP版本和操作系统选择对应方式:
- Windows:
下载匹配PHP版本、线程安全(TS)/非线程安全(NTS)的php_sqlsrv.dll和php_pdo_sqlsrv.dll,将文件放入PHP安装目录下的ext文件夹。 - Linux/macOS:
通过PECL命令安装:pecl install sqlsrv pdo_sqlsrv
2. 启用扩展
打开php.ini配置文件,添加以下两行(Windows):
extension=sqlsrv extension=pdo_sqlsrv
Linux/macOS需根据系统配置,在对应扩展配置文件中添加上述内容,确保扩展被加载。
3. 验证扩展状态
执行以下命令检查扩展是否成功加载:
php -m | grep sqlsrv
若输出sqlsrv和pdo_sqlsrv,说明扩展启用成功。
4. 重启服务
修改配置后,必须重启Web服务器(Apache/Nginx)或PHP-FPM服务,让新配置生效。
5. 核对Laravel数据库配置
确认项目根目录下的.env文件中数据库连接参数正确:
DB_CONNECTION=sqlsrv DB_HOST=你的SQL Server地址 DB_PORT=1433 DB_DATABASE=目标数据库名 DB_USERNAME=数据库账号 DB_PASSWORD=数据库密码
内容的提问来源于stack exchange,提问作者Pedro Josué
相关产品推荐
相关产品推荐

