You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 10连接SQL Server Express迁移失败问题求助

Laravel 10 连接SQL Server迁移报错排查方案

一、解决「TCP Provider: 由于目标计算机积极拒绝,无法连接」错误

  • 启用SQL Server TCP/IP协议:打开SQL Server配置管理器,依次展开「SQL Server网络配置」→「[你的SQL Server实例名]的协议」,确保「TCP/IP」处于启用状态,之后重启SQL Server服务。
  • 核对端口配置:在TCP/IP的属性窗口切换到「IP地址」标签,找到「IPAll」下的「TCP端口」,确认该端口与.env文件中的DB_PORT一致(默认1433)。如果使用动态端口,需查看SQL Server错误日志获取实际使用的端口。
  • 测试网络连通性:用命令行工具验证端口是否开放:
    • Windows:telnet 你的DB_HOST 你的DB_PORT 或 PowerShell执行 Test-NetConnection 你的DB_HOST -Port 你的DB_PORT
    • 如果不通,检查Windows防火墙是否开放对应端口,可临时关闭防火墙测试是否是防火墙拦截。
  • 确认SQL Server身份验证模式:确保SQL Server设置为混合模式身份验证(Windows+SQL Server身份验证),且.env中的DB_USERNAME是SQL Server本地账号(而非Windows域账号),密码正确。
  • 验证PHP驱动加载:
    • 确认安装的ODBC Driver 17 for SQL Server与PHP版本(x86/x64)匹配。
    • 打开php.ini文件,确保已添加extension=pdo_sqlsrv和extension=sqlsrv(去掉前面的分号注释),重启Apache/Nginx后,执行php -m命令查看是否加载了pdo_sqlsrv和sqlsrv扩展。

二、解决「Nothing to Migrate」问题

  • 检查迁移文件:确认database/migrations目录下存在未执行的迁移文件,且文件名符合Laravel规范(格式为YYYY_MM_DD_HHMMSS_xxx.php)。
  • 查看迁移状态:执行php artisan migrate:status命令,查看哪些迁移已被标记为执行。如果存在已记录但实际表被删除的情况,可手动删除migrations表中对应记录,或执行php artisan migrate:fresh重置数据库(注意:此命令会清空所有数据)。
  • 指定数据库连接:如果项目配置了多个数据库连接,执行迁移时需明确指定SQL Server连接:php artisan migrate --database=sqlsrv
  • 检查迁移文件语法:排查迁移文件中的up()和down()方法是否存在语法错误(如拼写错误、缺少分号、语法不规范等),错误的语法会导致迁移文件无法被系统识别。

内容的提问来源于stack exchange,提问作者Brian James Abellar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 15:28:18