TCP 提供程序连接被拒绝 - Laravel 6 和 SQL 服务器 (Microsoft) 和 Laragon

TCP Provider connection refused - Laravel 6 and SQL Server (Microsoft) and Laragon

我目前正在全新安装 Laravel 6 并尝试将其连接到我的 Microsoft SQL 服务器,我正在使用 Laragon 在本地提供服务。

我已经下载了 SQL 服务器的 ODBC 驱动程序。

我的 database.php 文件包含:

'default' => env('DB_CONNECTION', 'sqlsrv'),

...

'sqlsrv' => [
        'driver' => 'sqlsrv',
        'url' => env('DATABASE_URL'),
        'odbc' => true, // I added this line
        'odbc_datasource_name' => '{SQL Server}', // I added this line
        '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,
 ],

我的 .env 包含有效的登录凭据。为了测试我是否可以连接到数据库,我检查了 welcome.blade.php:

@php
    if (DB::connection()->getDatabaseName())
    {
        echo "connected successfully to database ".DB::connection()->getDatabaseName();

    }
@endphp

在我的页面上回显为:

connected successfully to database testDatabase

我已经进入 Tinker 看看是否可以从我的模型中获取所有员工的集合,即 Carer.php:


namespace App;

use Illuminate\Database\Eloquent\Model;

class Carer extends Model
{
    protected $table = "dbo.carer";

    protected $primaryKey = 'CarerID';
}

    ...

$carer = App\Carer::all();

哪个returns:

Illuminate/Database/QueryException with message 'could not find driver (SQL: select * from [dbo].[carer])'

如果我在尝试检索模型数据时找不到驱动程序,这是否意味着我连接到数据库的检查有问题?我是否必须在 Laragon 中做一些特定的事情才能让它在 SQL 服务器上工作?

谢谢。

更新:按照 here and here 的说明,我已经成功地将 PDO 驱动程序添加到我的 php.ini 文件并获取它 运行 Laragon。当我打印出 phpinfo() 时,我现在可以看到 sql 服务器。

我现在得到的错误是:

Illuminate/Database/QueryException with message 'SQLSTATE[08001]: [Microsoft][ODBC Driver 17 for SQL Server]TCP Provider: No connection could be made because the target machine actively refused it. (SQL: select top 1 * from [dbo].[carer])'

回答这个问题,以防其他人卡在同一点上。

我的 Microsoft SQL 服务器没有启用 TCP/IP 连接。

您想:

  1. 打开SQL服务器配置管理器

  2. 在 SQL 服务器网络配置下,select MSSQLSERVER

  3. 协议
  4. 右键单击 TCP/IP 并单击启用

  5. 重启SQL服务器(MSSQL服务器)

Source