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

时间:2016-06-19 14:12:24

标签: pdo laravel-5.2 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。

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

我有同样的错误。

删除后     来自您host - 文件的DB_HOST // .env个条目以及您为我工作的config/database.php条目

答案 2 :(得分:0)

我为连接所做的是

  1. 安装了正确版本的sqlsrv dll。
  2. Laravel更新了doctrine dbal包。
  3. 我的数据库配置在

    下面
    'sqlsrv3' => [
                'driver' => 'sqlsrv',
                'host' => '<host-name>',
                'database' => '<database-name>',
                'username' => '<your-username>',
                'password' => '<your-password>',
        ]  
    

答案 3 :(得分:-1)

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

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

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