常规错误:20003 Adaptive Server连接超时[20003](严重级6)

时间:2016-12-23 12:22:53

标签: php sql-server linux laravel-5 freetds

嗨以下是我得到的错误: -

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上进行telnet。
  3. 我没有使用免费的TDS,所以这不是TDS的重复,甚至没有回答这个问题。
  4. centos 7,能够ping到IP。没有连接问题。
  5. 从终端运行脚本,因此不会出现超时问题。
  6. 在我尝试获取5k记录之前,我的thot查询需要更长的时间,但即使我将限制减少到100然后也会得到相同的错误。 我的网络连接速度很快,服务器硬件配置很高。

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

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

    我的脚本在本地运行良好。但是当我将代码提升为dev时面临问题。

1 个答案:

答案 0 :(得分:6)

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

我遇到了同样的问题,在我更改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,
    ],
],