如何在Laravel中修复PDO sqlsrv连接超时?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Laravel中修复PDO sqlsrv连接超时?相关的知识,希望对你有一定的参考价值。

开发商!

我正在使用Laravel框架,我需要连接到MS SQL 2014 Express数据库。我已经在.env中进行了所有正确的配置(我甚至尝试过将连接参数直接放到database.php配置中)但是在第一次请求时我总是会遇到错误:

PDOException in Connector.php line 55:
SQLSTATE[08001]: [Microsoft][ODBC Driver 11 for SQL Server]TCP Provider: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.

超时后,我总是得到这个PHP致命的:

FatalErrorException in Connector.php line 55
Invalid handle returned.

作为开发工具我正在使用XAMPP,当我重新启动apache服务器时,有时我可以成功建立连接,但只有20-30次尝试中的1次。

Laravel正在使用PDO驱动程序,所以我尝试使用sqlsrv_connect() - 它有效!没有错误,一切都很好。

有人可以帮我配置PDO吗? Laravel只使用PDO驱动程序,因此我不能只切换到sqlsrv_connect。

答案

我在本地计算机上运行此问题。我重新启动了laravel服务器并确保ms sql localdb正在运行并且问题自行解决了。

另一答案

我有同样的错误。

从你的host文件和DB_HOST中删除.env // config/database.php条目后,它对我有效。

另一答案

我为连接做了什么

  1. 安装了正确版本的sqlsrv dll。
  2. 在Laravel更新了doctrine dbal包。

我的数据库配置如下

'sqlsrv3' => [
            'driver' => 'sqlsrv',
            'host' => '<host-name>',
            'database' => '<database-name>',
            'username' => '<your-username>',
            'password' => '<your-password>',
    ]  
另一答案

有相同的错误,结果是我的密码错了。确认您拥有正确的价值观。

DB_HOST={youservername}.database.windows.net
DB_DATABASE={dbname}
DB_USERNAME={username}  
DB_PASSWORD={yourpassword}
DB_PORT=1433

如果没有修复,请重置密码,然后重试

以上是关于如何在Laravel中修复PDO sqlsrv连接超时?的主要内容,如果未能解决你的问题,请参考以下文章

php以pdo方式连接sqlserver,无法开启sqlsrv扩展

Centos7.5 php7.2 安装pdo_sqlsrv 连接 sql server(转)

如何在 Ubuntu 20.04.2 LTS 中启用驱动程序 pdo-sqlsrv

使用 pdo_sqlsrv 执行存储过程

如何在我的 windows 2008 Server 2008 R2 上安装 pdo_sqlsrv? [关闭]

如何在 openSUSE 飞跃 15 上安装 pdo_sqlsrv php 扩展