SQLSTATE[08001]:[Microsoft][SQL Server 的 ODBC 驱动程序 17]TCP 提供程序:错误代码 0x2746

问题描述 投票:0回答:4

我在 Ubuntu 20.04 上使用 PHP Laravel 7.4。并尝试从位于另一个云上的 Windows 服务器中的 SQL 服务器获取数据。

此方法在我的PC(Windows)上进行了测试,它成功地从Windows服务器获取了数据(如上所述),但是在我的ubuntu服务器上我遵循文档ubuntu 20.04 PHP 7.4 https://learn.microsoft.com/en-us/sql/connect/php/installation-tutorial-linux-mac?view=sql-server-ver15

我收到此错误:

SQLSTATE[08001]:[Microsoft][SQL Server 的 ODBC 驱动程序 17]TCP 提供程序:错误代码 0x2746(SQL:myquery) {“userId”:94,“异常”:“[对象] (照亮\数据库\QueryException(代码:08001):SQLSTATE [08001]: [Microsoft][ODBC Driver 17 for SQL Server]TCP 提供程序:错误代码 0x2746(SQL:myquery)位于 /var/www/web-api/vendor/laravel/framework/src/Illuminate/Database/Connection.php:669)

我检查了 Microsoft SQL Server Management Studio 中的日志,我注意到每次我从 Ubuntu 发出请求时都会出现此消息

“从远程客户端收到 TLS 1.2 连接请求 应用程序,但客户端不支持任何密码套件 应用程序由服务器支持。 SSL 连接请求 失败了。”

php sql-server laravel ubuntu windows-server-2012-r2
4个回答
5
投票

尝试以下步骤:

  1. 安装 sqsrv 和 pdo_sqlsrv 扩展并重新启动 apache

  2. 更新并注释 config/database.php sqlsrv 数组中提到的行

    '端口' => env('DB_PORT','1433'),

sqlsrv 驱动程序的最终值将是这样的:

'sqlsrv' => [
            'driver' => 'sqlsrv',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', 'localhost'),
            // 'port' => env('DB_PORT', '1433'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => 'utf8',
            'prefix' => '',
            'prefix_indexes' => true,
        ],
  1. 在项目目录的命令行中点击这2个命令

      composer dump-autoload
    
      php artisan config:clear
    

2
投票

使用docker与

thecodingmachine/php
8.0,我通过使用
https://github.com/microsoft/msphpsql/issues/1023#issuecomment-732947905
中的配置编辑/etc/ssl/openssl.cnf

解决了这个问题

0
投票

我认为在 Laravel 中使用 mssql 时我也遇到过类似的错误。我通过在计算机上安装并启用 mssql php 扩展解决了这个问题。也许会有帮助。


0
投票

如果您使用 ip 访问远程数据库,请确保您的 wifi ip 已列入白名单,并且服务器或服务器为远程连接打开。

© www.soinside.com 2019 - 2024. All rights reserved.