General error: 20003 Adaptive Server connection timed out [20003] (severity 6)

General error: 20003 Adaptive Server connection timed out [20003] (severity 6)

您好,以下是我得到的错误:-

PDOException: SQLSTATE[HY000]: General error: 20003 Adaptive Server connection timed out [20003] (severity
 6) [(null)] in /var/www/html/web/vendor/laravel/framework/src/Illuminate/Database/Connection.php:335

我正在尝试从 linux laravel 5.2 代码片段连接到 windows 上的 MS-SQL-Server。

  1. windows 机器上的防火墙被禁用。
  2. 我可以在 ms sql 默认可用端口上的 windows ip 上远程登录。
  3. 我没有使用免费的 TDS,所以这不是 TDS 的副本,甚至那个问题也没有得到回答。
  4. centos 7,能ping通IP。没有连接问题。
  5. 运行 来自终端的脚本,所以不会出现超时问题。

在我尝试获取 5k 条记录之前,我认为查询花费了更长的时间,但即使我将限制减少到 100,也出现了同样的错误。 我的网络连接速度很快,服务器硬件配置也很高。

我已经尝试了下面给出的所有解决方案 link 并且我获得了成功,但是当我的脚本 运行 面临上述问题时。

[https://blogs.msdn.microsoft.com/sql_protocols/2008/04/30/steps-to-troubleshoot-sql-connectivity-issues/][1]

我的脚本运行在本地很好。但是当我将代码提升到开发时遇到问题。

问题似乎与您查询的执行时间有关。

我遇到了同样的问题,在我更改 config/databases.php 文件中的超时设置后问题得到解决。

使用下面的代码:

'options' => [
    PDO::ATTR_TIMEOUT => 300, // up to 5 minutes
],

完整的配置应该是:

'sqlsrv' => [
    'driver' => 'sqlsrv',
    'host' => env('DB_HOST', 'localhost'),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE', 'forge'),
    'username' => env('DB_USERNAME', 'forge'),
    'password' => env('DB_PASSWORD', ''),
    'prefix' => '',
    'options' => [
        PDO::ATTR_TIMEOUT => 300,
    ],
],